Registriert seit: 24.04.2020
Version(en): 2019
11.07.2022, 19:54
(Dieser Beitrag wurde zuletzt bearbeitet: 11.07.2022, 19:57 von peter.muss.)
Moin Gemeinde!
Ich benötige eine Formel, die folgende Funktionalität hat:
In Zelle A1 steht eine beliebige Ganzzahl.
Die Funktion soll nun foglendes erledigen:
1) wenn A1 = gerade Zahl, dann A1/2
2) wenn das Ergebnis wieder gerade ist, erneut durch 2 teilen
3) wiederholen, ... bis die Zahl auf 1 ist oder ungerade wird
4) wenn A1 ungerade ist oder gem. Berechnung ungerade geworden ist, soll folgende Rechnung durchgeführt werden:
(Ungerade Zahl x 3) + 1
5) dann soll wieder die Berechnung wie bei 1) starten...
Ich habe keine Idee, wie ich das in Excel lösen kann...
Beispiele:
Mit 19 starten und erhält: 19, 58, 29, 88, 44, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1, …
Mit 12 starten und erhält: 12, 6, 3, 10, 5, 16, 8, 4, 2, 1
Für jeden Tipp dankbar
Peter
Registriert seit: 21.12.2017
Version(en): MS 365 Family (6 User x 5 Geräte für jeden) Insider-Beta
11.07.2022, 20:17
(Dieser Beitrag wurde zuletzt bearbeitet: 11.07.2022, 20:18 von LCohen.)
Für 365/Web/2021+ B1: =WENN(A1:Z1=1;0;WENN(REST(A1:Z1;2)=1;A1:Z1*3+1;A1:Z1/2))
Iteration einstellen! Für XLWeb: In alter Version in leerer Datei Iteration aktivieren und diese leere Datei nach XLWeb hochladen und formelbestücken.
Folgende(r) 1 Nutzer sagt Danke an LCohen für diesen Beitrag:1 Nutzer sagt Danke an LCohen für diesen Beitrag 28
• peter.muss
Registriert seit: 06.12.2015
Version(en): 2016
Hallo,
eigentlich ein Fall für VBA:
Code:
Sub Folge()
anf = 12
Do While anf <> 1
If anf Mod 2 = 0 Then
anf = anf / 2
Else
anf = anf * 3 + 1
End If
Debug.Print anf
Loop
End Sub
Wo kommt diese FRagestellung her, kommt mir irgendwie bekannt vor.
mfg
Registriert seit: 24.04.2020
Version(en): 2019
11.07.2022, 20:47
(Dieser Beitrag wurde zuletzt bearbeitet: 11.07.2022, 20:49 von peter.muss.)
Vielen Dank für die Formel!
Klappt (fast) immer ...
wenn die Zahlen größer werden, hört die Berechnung / Iteration einfach auf.
Ist völlig unspezifisch, machmal bereits bei 3 stelligen Zahlen machmal bei recht großen...
1299 als Startwert liefert in Zelle CW1 die Zahl 2429 und dann kommen nur noch nullen...
Mache ich da was falsch?
Vielen Dank für Deine Hilfe!
Peter
(11.07.2022, 20:46)Fennek schrieb: Hallo,
eigentlich ein Fall für VBA:
Hey Fennek, das ist das "Collatz Problem/Vermutung
Vielen Dank für das VBA Script.. da traue ich mich gar nicht ran, da ich nicht mal weiß, wie und wo ich das einfügen muss...
Code:
Sub Folge()
anf = 12
Do While anf <> 1
If anf Mod 2 = 0 Then
anf = anf / 2
Else
anf = anf * 3 + 1
End If
Debug.Print anf
Loop
End Sub
Wo kommt diese FRagestellung her, kommt mir irgendwie bekannt vor.
mfg
Registriert seit: 06.12.2015
Version(en): 2016
Code:
Sub Folge()
Dim Anf As Long
Anf = 1299
Do While Anf <> 1
If Anf Mod 2 = 0 Then
Anf = Anf / 2
Else
Anf = Anf * 3 + 1
End If
Debug.Print Anf
Loop
End Sub
Mehr als 10.000 wurde es aber nicht.
Registriert seit: 21.12.2017
Version(en): MS 365 Family (6 User x 5 Geräte für jeden) Insider-Beta
11.07.2022, 22:01
(Dieser Beitrag wurde zuletzt bearbeitet: 11.07.2022, 22:03 von LCohen.)
A1:Z1 sagt doch aus, wie groß das Array ist. Einfach vergrößern (und die Iteration mindestens genauso groß).
=WENN(A1:Z1=1;0;WENN(REST(A1:Z1;2)=1;A1:Z1*3+1;A1:Z1/2))
wird übrigens aufgrund der Gleitkommaproblematik richtig zu
=WENN(RUNDEN(A1:Z1;)=1;0;WENN(REST(A1:Z1;2)=1;A1:Z1*3+1;RUNDEN(A1:Z1/2;)))
Registriert seit: 29.01.2018
Version(en): 2021
12.07.2022, 05:06
(Dieser Beitrag wurde zuletzt bearbeitet: 12.07.2022, 05:06 von Sulprobil.)
Testet Eure Ansätze mal mit 3732423. Kommen alle 597 Elemente heraus?
Registriert seit: 21.12.2017
Version(en): MS 365 Family (6 User x 5 Geräte für jeden) Insider-Beta
Wir sind kein sulprobil und kein Erdős.
Registriert seit: 13.04.2014
Version(en): 365
Hi,
aber die 597 Elemente sind da!
Gruß
Edgar
Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Registriert seit: 08.05.2014
Version(en): Office 2010, Office 365, Office 365 Betakanal
Hallo,
Excel 365 ggf. Betakanal, als rekursive LAMBDA-Funktion, die auch VSTAPLEN (VSTACK) benötigt ...
PHP-Code:
=LET(Value;$A$1;F;LAMBDA(This;Array;LET(U;INDEX(Array;ZEILEN(Array);1);V;WENN(ISTGERADE(U);U/2;3*U+1);WENN(V<2;VSTAPELN(Array;V);This(This;VSTAPELN(Array;V)))));F(F;Value))
Gruß
Microsoft Excel Expert · Microsoft Most Valuable Professional (MVP) :: 2011-2019 & 2020-2022 :: 10 Awardshttps://de.excel-translator.de/translator :: Online Excel-Formel-Übersetzer :: Funktionen :: Fehlerwerte :: Argumente :: Tabellenbezeichner