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 Antworten

Der 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.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage