Ich versuche, Projekt Euler Nummer drei zu lösen, aber ich bin ziemlich durcheinander mit der Logik, um die Berechnung zu stoppen.Problem versuchen Projekt Euler # 3
Hier ist das Projekt Euler Nummer drei:
Die Primfaktoren von 13195 sind 5, 7, 13 und 29
Was ist der größte Primfaktor der Nummer 600851475143?
Nun, habe ich eine Funktion zu überprüfen, ob die Zahl eine Primzahl ist:
public static boolean isPrime(int number) {
if (number % 2 == 0)
return false;
for (int i = 3; i*i <= number; i+=2) {
System.out.println("Dividing the number " + number + " by: " + i);
if (number % i == 0)
return false;
}
return true;
}
Und eine Funktion zu überprüfen, ob die Primzahl ein Faktor der Nummer lautet:
public static boolean isFactor(int number, int prime) {
if (number % prime == 0)
return true;
else
return false;
}
Nur Problem ist die Hauptfunktion, ich versuche etwas in der Art:
public static void main(String[] args) {
int number = 13195;
int i = 3;
do {
i++;
} while (isPrime(i) && isFactor(number, i) == false);
System.out.println(i);
}
Ich weiß, dass die Logik nicht stimmt, aber ich bin wirklich länger als eine Stunde dran.
Ich weiß, dass das Hauptziel hier ist, zu loopen, eine Primzahl zu finden und zu überprüfen, ob diese Primzahl ein Faktor der Zahl ist und die größte findet, aber die Stoppbedingung wäre, wenn die Schleifenzahl eine Primzahl ist und nicht ist ein Faktor der Anzahl.
Sorry für das Chaos, ich bin ziemlich fest :) danke!
arbeiten für 'number = 63' Sie erhalten den höchsten Faktor als' 4' aber der höchste Faktor ist '7'. Überprüfen Sie Ihre Bedingungen für das Beenden von 'do while loop'. –
[hier ist Ihre Antwort] (http://stackoverflow.com/questions/24772139/largest-prime-factor-euler-project?rq=1) –