Guten Tag
Ich muss als Hausaufgabe Ulam folge lösen. Aufgabestellung:
*/
Es sollte ein Programm erstellt werden, die eine Zahlenfolge nach folgender Vorschrift erzeugt:
Ich habe die Aufgabe lösen können, jedoch nicht ganz. Wenn ich die Zahl höher als 23 eingebe ist die Ausgabe als höchste Zahl 52 oder 160.
Jemand eine Idee wo mir den Bock passiert ist, oder vlt sogar einer geschmeidigere lösung ? Ich habe mal versucht mir Arrays zu arbeiten, ist mir aber noch zu schwer.
Hier der Code:
[CODE lang="java" title="Ulam Folge"]public class ulam_v2 {
public static void main (String[] args) {
int Zahlenfolge = 0;
int ZahlenfolgeOld = 0;
int ZahlenfolgeMax1 = 0;
int ZahlenfolgeMax2 = 0;
int ZahlenfolgeMaxResult = 0;
int Zahlenfolgewv = 0;
int i = 0;
int j = 0;
System.out.println("ULAM-Folge");
System.out.println("============================================");
System.out.print("Startzahl eingeben: ");
Zahlenfolge = Integer.parseInt(System.console().readLine());
while (Zahlenfolge != 1)
{
if ( Zahlenfolge % 2 == 0)
{
Zahlenfolge = Zahlenfolge / 2;
Zahlenfolgewv = Zahlenfolgewv + 1;
System.out.print(Zahlenfolge + "\t");
if (Zahlenfolge > i){
ZahlenfolgeMax1 = Zahlenfolge;
}
i = Zahlenfolge;
}
else
{
Zahlenfolge = (Zahlenfolge * 3) + 1;
Zahlenfolgewv = Zahlenfolgewv + 1;
System.out.print(Zahlenfolge + "\t");
if (Zahlenfolge > j){
ZahlenfolgeMax2 = Zahlenfolge;
}
j = Zahlenfolge;
}
}
if (ZahlenfolgeMax1 > ZahlenfolgeMax2){
ZahlenfolgeMaxResult = ZahlenfolgeMax1;
} else {
ZahlenfolgeMaxResult = ZahlenfolgeMax2;
}
System.out.println("\nDie Folge umfasst " + Zahlenfolgewv + " Zahlen.");
System.out.println("Die groesste Zahl ist " + ZahlenfolgeMaxResult);
}
}[/CODE]
Ich muss als Hausaufgabe Ulam folge lösen. Aufgabestellung:
*/
Es sollte ein Programm erstellt werden, die eine Zahlenfolge nach folgender Vorschrift erzeugt:
- Der Benutzer gibt eine Startzahl ein.
- Wenn die Zahl gerade ist, wird diese halbiert. Wenn dies nicht der Fall ist, wird diese mit 3 multipliziert und dann um 1 erhöht (Zahl*3+1).
- Dies soll geschehen, solange die Zahl ungleich 1 ist.
- Das Programm ermittelt die grösste Zahl aus der Folge und die Anzahl angezeigterZahlen. Diese Angaben werden am Schluss eingeblendet:
Ich habe die Aufgabe lösen können, jedoch nicht ganz. Wenn ich die Zahl höher als 23 eingebe ist die Ausgabe als höchste Zahl 52 oder 160.
Jemand eine Idee wo mir den Bock passiert ist, oder vlt sogar einer geschmeidigere lösung ? Ich habe mal versucht mir Arrays zu arbeiten, ist mir aber noch zu schwer.
Hier der Code:
[CODE lang="java" title="Ulam Folge"]public class ulam_v2 {
public static void main (String[] args) {
int Zahlenfolge = 0;
int ZahlenfolgeOld = 0;
int ZahlenfolgeMax1 = 0;
int ZahlenfolgeMax2 = 0;
int ZahlenfolgeMaxResult = 0;
int Zahlenfolgewv = 0;
int i = 0;
int j = 0;
System.out.println("ULAM-Folge");
System.out.println("============================================");
System.out.print("Startzahl eingeben: ");
Zahlenfolge = Integer.parseInt(System.console().readLine());
while (Zahlenfolge != 1)
{
if ( Zahlenfolge % 2 == 0)
{
Zahlenfolge = Zahlenfolge / 2;
Zahlenfolgewv = Zahlenfolgewv + 1;
System.out.print(Zahlenfolge + "\t");
if (Zahlenfolge > i){
ZahlenfolgeMax1 = Zahlenfolge;
}
i = Zahlenfolge;
}
else
{
Zahlenfolge = (Zahlenfolge * 3) + 1;
Zahlenfolgewv = Zahlenfolgewv + 1;
System.out.print(Zahlenfolge + "\t");
if (Zahlenfolge > j){
ZahlenfolgeMax2 = Zahlenfolge;
}
j = Zahlenfolge;
}
}
if (ZahlenfolgeMax1 > ZahlenfolgeMax2){
ZahlenfolgeMaxResult = ZahlenfolgeMax1;
} else {
ZahlenfolgeMaxResult = ZahlenfolgeMax2;
}
System.out.println("\nDie Folge umfasst " + Zahlenfolgewv + " Zahlen.");
System.out.println("Die groesste Zahl ist " + ZahlenfolgeMaxResult);
}
}[/CODE]