Hallo,
ich habe mit der Hilfe von paar Youtube-Videos angefangen etwas zu programmieren und habe im Internet die Anregung bekommen, mal ein Programm zu machen, welches das iterierte Querprodukt von Zahlen berechnet. Also das Querprodukt einer Zahl und von dem Ergebnis wieder das Querprodukt, bis eine einstellige Zahl auftritt. (Querprodukt heißt das Produkt der Ziffern einer Zahl)
Das Programm soll die jeweils kleinsten Zahlen ausgeben die, 1-10 Schritte benötigen.
Bin schon relativ weit aber komsicherweise werden die ersten beiden Zahlen falsch ausgegeben und ich verstehe nicht warum.
Das Programm gibt aus:
1 Schritte braucht die Zahl:11
2 Schritte braucht die Zahl:26
3 Schritte braucht die Zahl:39
4 Schritte braucht die Zahl:77
5 Schritte braucht die Zahl:679
6 Schritte braucht die Zahl:6788
7 Schritte braucht die Zahl:68889
8 Schritte braucht die Zahl:2677889
9 Schritte braucht die Zahl:26888999
10 Schritte braucht die Zahl:378888999
Die erste Zahl sollte jedoch 10, und die 25 sein. Weiß jemand wo mein Fehler liegen könnte?
Ich hoffe mein Code ist für euch verständlich, ist natürlich wahrscheinlich sehr umständlich und schlecht geschrieben.
Noch eine Frage wäre, wie ich so ein Programm optimieren kann. Die 10 Zahl zu finden dauert sehr lange, vielleicht 7 min. Hat da jemand einen Tipp?
Danke!
Liebe Grüße
PcIv
ich habe mit der Hilfe von paar Youtube-Videos angefangen etwas zu programmieren und habe im Internet die Anregung bekommen, mal ein Programm zu machen, welches das iterierte Querprodukt von Zahlen berechnet. Also das Querprodukt einer Zahl und von dem Ergebnis wieder das Querprodukt, bis eine einstellige Zahl auftritt. (Querprodukt heißt das Produkt der Ziffern einer Zahl)
Das Programm soll die jeweils kleinsten Zahlen ausgeben die, 1-10 Schritte benötigen.
Bin schon relativ weit aber komsicherweise werden die ersten beiden Zahlen falsch ausgegeben und ich verstehe nicht warum.
Das Programm gibt aus:
1 Schritte braucht die Zahl:11
2 Schritte braucht die Zahl:26
3 Schritte braucht die Zahl:39
4 Schritte braucht die Zahl:77
5 Schritte braucht die Zahl:679
6 Schritte braucht die Zahl:6788
7 Schritte braucht die Zahl:68889
8 Schritte braucht die Zahl:2677889
9 Schritte braucht die Zahl:26888999
10 Schritte braucht die Zahl:378888999
Die erste Zahl sollte jedoch 10, und die 25 sein. Weiß jemand wo mein Fehler liegen könnte?
Ich hoffe mein Code ist für euch verständlich, ist natürlich wahrscheinlich sehr umständlich und schlecht geschrieben.
Java:
public class QP {
public static void main(String[] args) {
long zwerg = 9L;
short ausgabe = 0;
long schritte = 0L;
short vglausgabe = 0;
long zwerghelfer = 0L;
//Schleife Zahlen testen
while (schritte < 10000000000L) {
schritte ++;
zwerghelfer++;
zwerg = zwerghelfer;
ausgabe = 0;
// Schleife: Iteriertes Querprodukt
while (zwerg > 10 ) {
ausgabe++;
long[] ziffern;
ziffern = new long [11];
ziffern[0]= 1;
ziffern[1]= 1;
ziffern[2]= 1;
ziffern[3]= 1;
ziffern[4]= 1;
ziffern[5]= 1;
ziffern[6]= 1;
ziffern[7]= 1;
ziffern[8]= 1;
ziffern[9]= 1;
ziffern[10]= 1;
long n = 0;
long modz = 10;
short schleife = 0;
short arraylaufzahl = 0;
// Anzahl der Ziffern bestimmen
int stellen = String.valueOf(zwerg).length();
//Letzte Ziffer
n = zwerg % modz;
ziffern[0] = n;
///Schleife geht los zur Ziffernbestimmung
while (schleife < 10) {
modz = modz *10;
n = ((zwerg % modz) - n)/ (modz/10);
arraylaufzahl++;
ziffern[arraylaufzahl] = n;
schleife++;
}
// Ziffern im Array gespeichert
// Querprodukt bilden
short laufzahl = 0;
long zzwerg = 1;
while (laufzahl < stellen ) {
zzwerg = zzwerg*ziffern[laufzahl];
zwerg = zzwerg;
laufzahl++;
}
}
if (ausgabe > vglausgabe) {
vglausgabe = ausgabe;
System.out.println(ausgabe + " Schritte braucht die Zahl:" + zwerghelfer);
}
}
}
}
Noch eine Frage wäre, wie ich so ein Programm optimieren kann. Die 10 Zahl zu finden dauert sehr lange, vielleicht 7 min. Hat da jemand einen Tipp?
Danke!
Liebe Grüße
PcIv
Zuletzt bearbeitet von einem Moderator: