Hallo!
Ich bin Neuling in Java und habe folgende Aufgabenstellung bekommen:
...das habe ich soweit verstanden und versucht mit diesem Code umzusetzen:
Weiter steht in der Aufgabe:
Hat jemand eine Idee, wie ich nun vorgehen könnte????:L
Gruß
Ich bin Neuling in Java und habe folgende Aufgabenstellung bekommen:
Für eine Zahl n erhält man deren Querprodukt, indem man alle Ziffern der dezimalen Darstellung von n miteinander multipliziert. Offenbar ist das Querprodukt einer Zahl n immer kleiner als die Zahl selbst (warum?). Wendet man also die Bildung des Querproduktes (ausgehend von n) immer wieder an, erhält man eine (echt) absteigende Folge von neuen Zahlen, die irgendwann einstellig werden muss.
...das habe ich soweit verstanden und versucht mit diesem Code umzusetzen:
Java:
public class quer {
static int iteriertesQuerprodukt(int zahl) {
// Die zahl wird solange durch ihr Querprodukt
// ersetzt, bis das Ergebnis einstellig ist
// Iterieren der Querproduktbildung:
while (zahl > 9) {
// Berechnung das einfache Querprodukt:
int querprodukt = 1;
do {
querprodukt = querprodukt * zahl % 10;
zahl = zahl / 10;
} while (zahl > 0);
zahl = querprodukt;
}
return zahl;
}
public static void main(String[] args) {
int zahl = Integer.parseInt(args[0]);
System.out.println("Das iterierte Querprodukt ihrer Zahl ist " + iteriertesQuerprodukt(zahl));
}
}
Weiter steht in der Aufgabe:
In dieser Aufgabe interessiert nun die Anzahl der Schritte k (Wie oft muss das Querprodukt erneut gebildet werden?) bis dieser einstellige Fall eintritt.
Für einstellige Zahlen ist offenbar k==1. Die kleinste Zahl, die 2 Schritte erfordert, ist offenbar:
25 -> 2*5 = 10 -> 1*0 = 0
Ihre Aufgabe besteht nun darin, mit Hilfe eines Java-Programmes die jeweils kleinsten natürlichen Zahlen zu ermitteln, für die man 2, 3, 4, 5, 6, etc. Schritte benötigt.
Dabei soll dem Programm die Anzahl der maximalen Schritte kmax als Parameter übergeben werden. Es sollen dann alle kleinsten Zahlen für die Schrittanzahl bis zum Parameterwert zeilenweise entsprechend dieser Formatvorgabe ausgegeben werden:
Code:
$ java Quer 4
2 Schritte: 25
3 Schritte: 39
4 Schritte: 77
$
Zur Kontrolle Ihres Algorithmus sehen sie die richtigen Zahlen bis zu 4 Schritten in der Musterausgabe.
Natürlich wird Ihr Algorithmus mit zunehmender maximaler Schrittzahl auch länger brauchen, um die Ergebnisse zu bestimmen. Vermutlich wird er die Ergebnisse für kmax== 8 noch in weniger als einer Sekunde berechnen (hoffentlich. Auch kmax== 9 sollte noch im Sekundenbereich liegen. Allerdings wird kmax== 10 schon erheblich länger dauern, insbesondere passt die Zahl, für die man 10 Schritte braucht, nicht mehr in den Java-Datentyp int, wohl aber in den größeren Typ long.
Hat jemand eine Idee, wie ich nun vorgehen könnte????:L
Gruß