Eine fünfstellige Zahl dividiert durch eine dreistellige Zahl ergibt eine zweistellige Zahl mit 8 periodisch sich wiederholenden Nachkommastellen. Gesucht die 5- und 3-stellige Zahl. Ich bin dankbar für jede Antwort.
Gruß, Erhard
=WENN(C22>=10;WENN(WIEDERHOLEN(RECHTS(D22;1);8)=RECHTS(D22;8);"x";"");"")
Gefiltert nach dieser Spalte kannst Du Dir dann alle Ergebnisse anzeigen lassen.
Einfach in Spalte A die Zahl um 1 erhöhen und neu filtern.
Hier mal mit einem Steuerelement zum Erhöhen der Zahl
Hier die Datei zum testen
https://www.herber.de/bbs/user/62096.xls
Alternativ kannst Du Dir ja eine Schleife bauen dir Du bei 10000 startest und bis 99999 laufen läßt.
Ist in Spalte E ein "X" dann schreib Dir die Werte aus
Spalte A (Fünfstellige Zahl) und Spalte B (Dreistellige Zahl) dieser Zeile, irgendwo in ein Tabellenblatt.
Rückmeldung wäre nett
Gruß Matthias
A | |
3 | 12,45330012453300000 |
4 | 99,99875466998750000 |
5 | 803 |
Formeln der Tabelle | ||||||||
|
Public Sub Periode8stellig()
Dim i&, j&, r#, r1#, r2#
Dim n&, s%
On Error Resume Next
Application.ScreenUpdating = False
n = 1: s = 1
For j = 101 To 999
Application.StatusBar = "Dreistellige Zahl: " & j
For i = 10000 To 99999
r = (i / j) - Int(i / j) ' Nachkommastellen
If r 0 Then
r1 = 100000000 * r ' 8 Nachkommastellen
' Check 4-stellige Periode
If Int(r1 / 10000) Int(((r1 / 10000) - Int(r1 / 10000)) * 10000) Then
r2 = (r1 - Int(r1)) * 100000000 ' nächsten 8 Nachkommastellen
If Int(r1) = Int(r2) Then ' Gleichheit?
If i / j
Gruß
Andreas
Sub Nenner137()
Dim a&, b#, c%, z%
For a = 10000 To 13699
b = a / 137
c = a \ 137
If b > 10000 \ 137 0 Then
Cells(z + 1, 1) = b
Cells(z + 1, 2) = a
z = z + 1
End If
Next
End Sub
Gruß, Erhard
If b > 10000 \ 137 0 Then
Wenn du stattdessen das schreibst, bekommst du 3673 Zeilen:
If b 0 Then
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
If b > 10000 \ 137 0 Then
ist so sinnlos.
"b > 10000 \ 137 < 100" wir so ausgewertet:
"b > 10000 \ 137" ist - je nach dem Wert von b - True oder False, also -1 oder 0.
Egal, ob da True oder False rauskommt, beides ist kleiner als 100.
Somit ist der Teil vor dem And IMMER wahr, kann man also weglassen.
Die Zeile ist dann
If b - c 0 Then
und das Ergebis ist auch 3673.
Wie man schriftlich dividiert, war mir schon klar, auch schon vor den vielen xen in deinem letzten Beitrag... ;-)
Doch nun zu meinem Sonderangebot:
In der Mappe sind zwei Buttons, beide bringen das selbe Ergebnis, unterschiedlich dargestellt.
"Start" dauert ca. 12 Sek., "Brute Force" ca. 7 Minuten (!): https://www.herber.de/bbs/user/62138.xls
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
ab , cb , ed , cf , fg
Alle anderen Bedingungen sind sowieso erfülllt.
Damit bekomme ich 381024 Lösungen:
Option Explicit
Sub PoolA() ' 381024 Mgöglichkeiten (= 7^2 * 6^5)
Dim a As Integer, b As Integer, c As Integer, d As Integer, e As Integer
Dim f As Integer, g As Integer, zz As Long
Dim lnZ As Long
If 1 = 1 Then
Worksheets.Add
Rows(1).HorizontalAlignment = xlCenter
' Columns.ColumnWidth = 3.3
' Cells(1, 1).Resize(, 16) = Split("a b c d e f g || m n o p q r s v")
' zz = 1
End If
For a = 3 To 9
For b = 3 To 9
If b a Then
For c = 3 To 9
If c b Then
For d = 3 To 9
For e = 3 To 9
If e d Then
For f = 3 To 9
If f c Then
For g = 3 To 9
If g f Then
zz = zz + 1
Application.StatusBar = a & " / " & zz
If 0 = 1 Then
Cells(zz, 1).Select
Cells(zz, 1) = a
Cells(zz, 2) = b
Cells(zz, 3) = c
Cells(zz, 4) = d
Cells(zz, 5) = e
Cells(zz, 6) = f
Cells(zz, 7) = g
'm=abs(a-b) n=abs(c-b) o=abs(c-1) p=abs(d-1)
Cells(zz, 9) = Abs(a - b)
Cells(zz, 10) = Abs(c - b)
Cells(zz, 11) = c - 1
Cells(zz, 12) = d - 1
'q=abs(e-d) r=abs(c-f) s=abs(f-g) v=abs(b-2)
Cells(zz, 13) = Abs(e - d)
Cells(zz, 14) = Abs(c - f)
Cells(zz, 15) = Abs(f - g)
Cells(zz, 16) = b - 2
End If
End If
Next g
End If
Next f
End If
Next e
DoEvents
Next d
End If
Next c
If 1 = 1 Then
lnZ = lnZ + 1
Cells(lnZ, 1) = a
Cells(lnZ, 2) = b
Cells(lnZ, 3) = zz
zz = 0
End If
End If
Next b
Next a
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort