Hallo Leute,
folgendes Problem:
Die Funktion
g : N ---> N,
g( n) := 1/2 n , falls n gerade und
g( n) := 3 n + 1 , falls n ungerade
heißt Collatz-Funktion(L. Collatz, um 1930).
Bezeichnung:
Eine natürliche Zahl n heißt wundersam, wenn es eine natürliche Zahl k gibt mit :
g^k (n) = 1.
Zum Beispiel ist die Zahl 15 wundersam, denn :
15 ---> 46 ---> 23 ---> 70 ---> 35 ---> 106 ---> 53 ---> 160 ---> 80 --->
40 ---> 20 ---> 10 ---> 5 ---> 16 ---> 8 ---> 4 ---> 2 ---> 1
Gibt es dafür einen Algorithmus?
Wir haben schon einmal probiert, das zu implementieren, allerdings stürzt das Programm beim Starten ab
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| procedure TForm1.Button2Click(Sender: TObject); begin close; end;
procedure TForm1.FormCreate(Sender: TObject); var zahl1, zahl2 : integer; wundersam : Boolean; begin zahl1:=StrToInt(Edit1.Text); Repeat if zahl1 mod 2 = 0 then zahl2:=zahl1 DIV 2 else zahl2:=3*Zahl1+1; until Zahl2=1; wundersam:=false; if zahl2=1 then wundersam:=true; if wundersam=true then Edit3.Text:='wundersam'; end; |
Kann uns jemand helfen?
Vielen Dank im voraus
MFG