Project Euler # 3 außerhalb des Ganzzahlbereichs von Java [duplizieren]
Diese Frage hat hier bereits eine Antwort:
Das Literal xyz vom Typ int liegt außerhalb des Bereichs 5 AntwortenDer Code soll die größte Primzahl zurückgeben. Mehr zur Aufgabe hier:https: //projecteuler.net/problem=
int checkFactors(double na) {
long n = (long) na;
int biggestPrimeFactor = 0;
for (int i = 1; i < n; i++)
if (n % i == 0 && isPrimFaktor(i) && i > biggestPrimeFactor)
biggestPrimeFactor = i;
return biggestPrimeFactor;
}
boolean isPrimeFactor(int n) {
int length= 0;
for (int i = n; i > 0; i--)
if (n % i == 0)
length++;
if (length== 2)
return true;
return false;
}
Ich habe beschlossen, den Parameter von checkFactors () zu einem double zu machen, weil ich versucht habe zu testen, warum mein Code nicht richtig funktioniert.
System.out.println(checkFactors(13195));
works und gibt "29" zurück.
Jedoch,System.out.println(checkFactors(600851475143));
funktioniert nicht
"600851475143 vom Typ int liegt außerhalb des gültigen Bereichs".
System.out.println(checkFactors(600851475143.0));
kompiliert, gibt mir aber nach ein paar Sekunden eine ArithmeticException.