Hi, habe eine Aufgabe meines Java-Kurses bearbeitet und eigentlich müsste sie meines Wissens nach gelöst sein... anscheinend habe ich aber einen Fehler im Code, den ich einfach nicht finden kann. Normalerweise würde ich nicht so etwas fragen, aber ich habe wirklich mind. eine Stunde überlegt und den Fehler nicht finden können.
Die Aufgabe lautet:
Aufgabe 8:
Eine Natürliche Zahl heißt potent, wenn sie sich als Summe von Potenzen (>= 1) ihrer Ziffern darstellen lässt. Beispielsweise ist 24 wegen 2^3 + 4^2 = 24 potent. Schreiben Sie ein Java-Programm, das alle zweistelligen potenten Zahlen ausgibt.
Mein Lösungsansatz:
Die Funktion ergibt niemals true. Wo liegt mein Fehler??
Gruß
Die Aufgabe lautet:
Aufgabe 8:
Eine Natürliche Zahl heißt potent, wenn sie sich als Summe von Potenzen (>= 1) ihrer Ziffern darstellen lässt. Beispielsweise ist 24 wegen 2^3 + 4^2 = 24 potent. Schreiben Sie ein Java-Programm, das alle zweistelligen potenten Zahlen ausgibt.
Mein Lösungsansatz:
Java:
public class potenteZahlen {
public static void main(String[] args) {
long x = 99;
while (x > 9) { // gehe alle Zahlen von 99-10 durch
long ziffer1 = 0;
long ziffer2 = 0;
ziffer1 = x % 10; // erzeuge Ziffer1
ziffer2 = (x/10) % 10; // erzeuge Ziffer2
if (potent(ziffer1, ziffer2, x)) { // ist Zahl potent?
System.out.println(x); // zeige Zahl
}
x--;
}
}
static boolean potent(long ziffer1, long ziffer2, long zahl) {
long a = ziffer1;
long b = ziffer2;
for (int x = 1; x <=9; x++) { // potenziere die Ziffer 9 mal
if (x != 1) { // bei Ziffer^1 keine Potenzierung
ziffer1*=a; // Ziffer1 * Ziffer1 * ....
}
for (int y = 1; y <=9; y++) { // potenziere die Ziffer 9 mal
if (y != 1) { // bei Ziffer^1 keine Potenzierung
ziffer2*=b; // Ziffer2 * Ziffer2 * ....
}
if (ziffer1 + ziffer2 == zahl) { // wenn sich aus den Potenzen Zahl ergibt, dann true
return true;
}
}
}
return false;
}
}
Gruß
Zuletzt bearbeitet: