Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1104to1108
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zahl über Permutation finden

Zahl über Permutation finden
alifa
Hallo,
Wenn es nicht zu aufwendig sein sollte, könnte mir jemand hier helfen?
Option Explicit
'Ich suche eine dreistellige Zahl abc.
'Dabei gilt:
'a) a ist größer als b und b ist größer als c.
'b) Alle Ziffern sind größer als 0.
'c) Eine der Permutationen (*) von abc ist ein Vielfaches einer quadrierten Quadratzahl.
'd) Eine andere Permutation ist durch 17 teilbar.
'e) Eine weitere Permutation ist durch 13 teilbar.
Sub ZahlGesucht_1()
Dim n%, z%, t!
t = Timer
For n = 321 To 987
If Mid(n, 1, 1) > Mid(n, 2, 1) And Mid(n, 2, 1) > Mid(n, 3, 1) _
And Mid(n, 3, 1)  0 And Mid(n, 2, 1)  0 Then
If CInt(Mid(n, 1, 1) & Mid(n, 3, 1) & Mid(n, 2, 1)) Mod 16 = 0 Then
Cells(z + 1, 1) = n
z = z + 1
End If
End If
Next
MsgBox " fertig in" & Round(Timer - t, 2) & " Sec"
End Sub

Ich habe das so angefangen, glaube aber, es geht auch einfacher.
Gruß, Erhard
AW: Zahl über Permutation finden
05.10.2009 23:25:28
MichaV
Hallo,
es sind 2 Zahlen.

Sub ZahlSuchen()
'a) a ist größer als b und b ist größer als c.
'b) Alle Ziffern sind größer als 0.
'c) Eine der Permutationen (*) von abc ist ein Vielfaches einer quadrierten Quadratzahl.
'd) Eine andere Permutation ist durch 17 teilbar.
'e) Eine weitere Permutation ist durch 13 teilbar.
Dim i%
Dim d%
Dim z%, z1%, z2%, z3%
For i = 7 To 62  'in diesem Bereich 3-stellige Vielfache der kleinsten quadrierten Quadratzahl  _
16
z = i * 16
z1 = Mid(z, 1, 1)
z2 = Mid(z, 2, 1)
z3 = Mid(z, 3, 1)
If z1  z2 And z1  z3 And z2  z3 Then 'a trifft zu
If z1 > 0 And z2 > 0 And z3 > 0 Then  'b trifft zu
'c trifft sowieso zu
d = 0
'z1 & z2 & z3 wird nicht untersucht, denn es d) und e) sollen ja für andere
'Permutationen zutreffen als für c)
If CInt(z1 & z3 & z2) Mod 13 = 0 Or CInt(z1 & z3 & z2) Mod 17 = 0 Then d = d + 1
If CInt(z2 & z1 & z3) Mod 13 = 0 Or CInt(z2 & z1 & z3) Mod 17 = 0 Then d = d + 1
If CInt(z2 & z3 & z1) Mod 13 = 0 Or CInt(z2 & z3 & z1) Mod 17 = 0 Then d = d + 1
If CInt(z3 & z1 & z2) Mod 13 = 0 Or CInt(z3 & z1 & z2) Mod 17 = 0 Then d = d + 1
If CInt(z3 & z2 & z1) Mod 13 = 0 Or CInt(z3 & z2 & z1) Mod 17 = 0 Then d = d + 1
If d = 2 Then MsgBox z 'd oder e traf für 2 unterschiedliche Permutationen zu
'unsauber, denn es hätte auch 2x d oder 2x e zutreffen kö _
nnen
End If
End If
Next

Gruss- Micha
Anzeige
etwas "sauberer"
05.10.2009 23:41:53
MichaV

Sub ZahlSuchen()
'a) a ist größer als b und b ist größer als c.
'b) Alle Ziffern sind größer als 0.
'c) Eine der Permutationen (*) von abc ist ein Vielfaches einer quadrierten Quadratzahl.
'd) Eine andere Permutation ist durch 17 teilbar.
'e) Eine weitere Permutation ist durch 13 teilbar.
Dim i As Integer
Dim d%, g%
Dim z%, z1%, z2%, z3%
a = 1
For i = 7 To 62  'in diesem Bereich 3-stellige Vielfache der kleinsten quadrierten Quadratzahl  _
16
z = i * 16
z1 = Mid(z, 1, 1)
z2 = Mid(z, 2, 1)
z3 = Mid(z, 3, 1)
If z1  z2 And z1  z3 And z2  z3 Then 'a trifft zu
If z1 > 0 And z2 > 0 And z3 > 0 Then  'b trifft zu
'c trifft sowieso zu
d = 0
'z1 & z2 & z3 wird nicht untersucht, denn es d) und e) sollen ja für andere
'Permutationen zutreffen als für c)
If CInt(z1 & z3 & z2) Mod 17 = 0 Then d = 1
If CInt(z2 & z1 & z3) Mod 17 = 0 Then d = 2
If CInt(z2 & z3 & z1) Mod 17 = 0 Then d = 3
If CInt(z3 & z1 & z2) Mod 17 = 0 Then d = 4
If CInt(z3 & z2 & z1) Mod 17 = 0 Then d = 5
If d > 0 Then 'mindestens ein d triff zu
If d  1 And CInt(z1 & z3 & z2) Mod 13 = 0 Then g = 1
If d  2 And CInt(z2 & z1 & z3) Mod 13 = 0 Then g = 1
If d  3 And CInt(z2 & z3 & z1) Mod 13 = 0 Then g = 1
If d  4 And CInt(z3 & z1 & z2) Mod 13 = 0 Then g = 1
If d  5 And CInt(z3 & z2 & z1) Mod 13 = 0 Then g = 1
If g = 1 Then
'mindestens ein anderes e) trifft zu
MsgBox z
g = 0
End If
End If
End If
End If
Next
End Sub

Anzeige
Mist, es sind sogar 3 Zahlen
05.10.2009 23:52:28
MichaV
...setzt man anstelle der 16 die nächst grössere quadrierte Quadrahtzahl ein
z = i * 81
dann erhält man eine 3. Lösung.
Gruss- Micha
AW: Mist, es sind sogar 3 Zahlen
06.10.2009 10:08:06
alifa
Hallo Micha,
Das Makro gibt die Zahlen:752, 896 und- mit 81 anstelle 16- die Zahl 891. Davon entspricht nur 752(a größer als b;b größer als c). Die Permutationen erfüllen die Bedingungen nicht. Die Zahl 981 würde passen. Deren Permutationen 918(/17=54), 819(/13=63) und 891(/81=11) sind OK.
Gruß, Erhard
AW: Mist, es sind sogar 3 Zahlen
06.10.2009 10:14:09
MichaV
Hei,
ja, ich hab a) nicht beachtet und es so interpretiert dass alle Zahlen unterschiedlich sein müssen. Die Permutationen von 752 sind zwar auch durch13 oder 17 teilbar, aber b) ist nicht erfüllt, weil eine andere Permutation als 752 durch die quadrierte Quadratzahl teilbar sein soll, richtig verstanden? Brauchst Du jetzt noch ne Code der das so bearbeitet (macht spaß das zu entwickeln) oder reicht Dir wenn Du die Zahl hast?
Gruß- Micha
Anzeige
AW: Mist, es sind sogar 3 Zahlen
06.10.2009 13:21:30
alifa
Die gesuchte Zahl(Z) soll bloß diese Bedingungen erfüllen:a größer als b und b größer als c. Weiter sind 3 von den 5(außer Z) Permutationen von Z interessant. ich bin SEHR interessiert an dem Makro. Vielleicht gibt es noch andere Zahlen, welche die Bedingungen erfüllen. Und auch, wenn es keine mehr gibt!
Gruß, Erhard
AW: Mist, es sind sogar 3 Zahlen
06.10.2009 14:18:18
MichaV
Okay, wenn Du mir noch verrätst wofür das gut ist dann kriegst Du ein Makro bei dem Du die Anzahl der Stellen von Z frei wählen kannst :o)
Wenn nicht dann bleibts bei 3 Stellen.
AW: Mist, es sind sogar 3 Zahlen
06.10.2009 15:40:57
alifa
Das kann ich Dir gerne sagen. Mich fasziniert das Programmieren. So suche ich Aufgaben, die dem einen Sinn geben. Ich programmiere selber, so weit meine Übersicht reicht. Hier war ich an meine Grenzen gestoßen. Ich suche nach der Antwort auf die Frage: Wie kann man bei einer For Schleife nur einen gewissen Pool an Zahlen eingeben? Also nicht For a=1 to 10000, sondern ich möchte nur die Quadratzahlen in diesem Bereich eingeben. So, jetzt weißt Du ungefähr, worum es geht. Auf keinen Fall verdiene ich Geld dabei!
Wie dem auch sei, ich bin in Deiner Schuld und danke für Deine Hilfe.
Anzeige
AW: Mist, es sind sogar 3 Zahlen
06.10.2009 15:49:53
MichaV
Ah, hört sich toll an. Bin gleich fertig mit der 3-Stellen-Lösung. Ich machs jetzt übrigens streng nach Reihenfolge, zuerst a), dann b), dann c) usw. Um nicht wieder so einen Murks zu produzieren...
AW: Mist, es sind sogar 3 Zahlen
06.10.2009 16:03:56
MichaV
Hallo,
ich habe als Vorbereitung zu meiner gewünschten Lösung (Unabhängigkeit von Anzahl der Stellen) die Permutation bereits als Funktion eingebaut. Wie Du siehst durchläuft das Makro alle Zahlen durch die a) und b) erfüllen und untersucht dann "von oben" auf c), d) und e). Für 3 Stellen läufts nun sicher und wie gefordert:
Option Explicit
Sub Finden()
'a) a ist größer als b und b ist größer als c.
'b) Alle Ziffern sind größer als 0.
'c) Eine der Permutationen (*) von abc ist ein Vielfaches einer quadrierten Quadratzahl.
'd) Eine andere Permutation ist durch 17 teilbar.
'e) Eine weitere Permutation ist durch 13 teilbar.
Dim i%, j%, k%, m%, o%
Dim z As Variant
Dim f As String
For i = 3 To 9
For j = 2 To i - 1
For k = 1 To j - 1
z = Permut("", i & j & k)
f = ""
For m = 2 To UBound(z)
If z(m) Mod 13 = 0 Then f = f & "e"
If z(m) Mod 17 = 0 Then f = f & "d"
For o = 2 To 4
If z(m) Mod o ^ 2 ^ 2 = 0 Then f = f & "c"
Next o
If InStr(f, "e") > 0 And InStr(f, "d") > 0 And InStr(f, "c") > 0 Then
MsgBox z(1): Exit For
End If
Next m
Next
Next
Next
End Sub
Function Permut(x As String, y As String)
'von K.Rola
'https://www.herber.de/forum/archiv/444to448/t446589.htm
'etwas angepasst
Dim i As Integer, j As Integer
Static s
If x = "" Then ReDim s(0)
s(0) = "#"
j = Len(y)
If j 
Gruß- Micha
Anzeige
AW: Zahl über Permutation finden
05.10.2009 23:33:40
Daniel
HI
probeir mal das hier, aber da kommt was anderes raus als bei dir:
Sub test()
Dim a As Long, b As Long, c As Long
Dim Zahl As Long
Dim i As Long
Dim Erg13 As String, Erg17 As String, ErgQ As String
Erg13 = "Teilbar durch 13: "
Erg17 = "Teilbar durch 17: "
ErgQ = "Vielfaches einer quadrierten Quadratzahl: "
For c = 1 To 7
For b = c + 1 To 8
For a = b + 1 To 9
Zahl = c + 10 * b + 100 * a
If Zahl Mod 13 = 0 Then Erg13 = Erg13 & Zahl & ", "
If Zahl Mod 17 = 0 Then Erg17 = Erg17 & Zahl & ", "
If Zahl Mod 16 = 0 Then ErgQ = ErgQ & Zahl & ", "
If Zahl Mod 81 = 0 Then ErgQ = ErgQ & Zahl & ", "
Next
Next
Next
MsgBox Erg13 & Chr(10) & Erg17 & Chr(10) & ErgQ
End Sub
Gruß, Daniel
Anzeige
AW: Zahl über Permutation finden
06.10.2009 09:48:32
alifa
Hallo Daniel,
Es wird zwar eine Zahl gesucht, doch deren 5 Permutationen (eigentlich 3 davon) müssen die Bedingungen erfüllen. Dein Makro findet die Zahl nicht, deren PERMUTATIONEN den Bedingungen entsprechen. Neben der 16 kommt auch die 81 in Betracht. Zuerst sollen die Permutationen aller dreistelligen Zahlen von 321 bis 987 der Reihe nach auf die Bedingungen untersucht werden. Von den 5 Permutationen müssen nur 3 passen. Mein Makro ist nicht komplett. Habe es nur zur Veranschaulichung der Aufgabe ins Netz gestellt.
Gruß, Erhard

303 Forumthreads zu ähnlichen Themen


Hallo zusammen.
Gibt es über VBA eine Möglichkeit, die Hintergrundfarbe einer Zelle in eine Zahl umzuwandeln und das schneller als mit for- Schleifen?
Habe einen Bereich ("J16:AG39"), wo ich per Zellaktivierung mit der Maus Zellen oder auch Zellbereiche mit einer Hintergrundfarbe verseh...
Anzeige

Hi Formelspezialisten,
in Zelle B2 steht dise Formel (funktionert auc h):
=TEXT(I4-D4;"00.0")&" ("&TEXT(I4/D4-1;"0%")&")".
Mein Ziel, dass eine Minuszahl in ROT erscheint. Hab's mit bedingte Formatierung versucht und bekomme es nicht hin.
Gibt es eine Möglichkeit, a...

Hallo,
ein ähnliches Problem wurde hier im Forum schon einmal diskutiert. (https://www.herber.de/forum/archiv/632to636/t635773.htm)
Meine Problem:
Wie kann ich die Anzahl unterschiedlicher Einträge/Werte einer Spalte erhalten, ohne dass diese vorgegeben werden ( also ohne die Verwe...
Anzeige

Hall Leute!
ich will nach einem Begriff, in meinem Fall nach "SUMs" in der Spalte C suchen und wissen wie oft es in der Spalte vorkommt.
Bei Berechnungen funktioniert es mit ZÄHLENWENN ohne Probleme aber wie erhalte ich die "absolute" Zahl?
Vielen Dank für Eure Hilfe!
Grüße
...

Hallo Excelfreunde,
ich suche eine VBA-Lösung für Zufallszahlen. Ich habe zwar einiges gefunden aber konnte ich es nicht nach meinen Anforderungen anpassen.
Ich will eine bestimmte Anzahl (per Variable veränderbar) von Zufallszahlen generieren (Ganzzahlen).
Dabei dürfen keine Wiede...

Guten Morgen!
Ich habe in einem Arbeitsblatt mehrere Tabellen.
In einer UserForm habe habe ich 460 TextBoxen, wobei die Zählung immer pro Reihe senkrecht erfolgt.
Spalte 1 = TextBox1-23, Spalte2 = TextBox24- TextBox46 usw.
Ich möchte nun z.B. die erste Tabelle in die Textboxen e...
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige