Summe der Ersten 1000 Primzahlen nicht korrekt? was ist falsch?

Hier ist, was ich haben

public class SumOfPrimes {
    public static void main(String[] args) {
        long sum = 0;
        for (int i = 2; i <= 1000; i++) {
            if (isPrime(i)) {
                sum += i;
            }
        }
        System.out.println(sum);
    }

    private static boolean isPrime(final int number) {
        for (int i = 2; i * i <= number; i++) {
            if (number % i == 0) {
                return false;
            }
        }
        return true;
    }
}  

Was ich bekomme ist

76127

Jedoch die richtige Antwort ist

3682913

Referenz: http://www.wolframalpha.com/input/?i=sum+ersten+1000+prime+zahlen&x=0&y=0

Ich bin nicht in der Lage, Fehler in meinem code, keine Hilfe hier?

  • "Die Summe der ersten 1000 Primzahlen" ist nicht das gleiche wie "die Summe aller Primzahlen, die <= 1000"
  • Machen Sie dies ein wenig effizienter durch starten von sum 2, ich 3, und false zurückgeben, in isPrime für alles, was ist ein Vielfaches von 2. Dann können Sie beginnen, isPrime ist ich auf 3, und einer Schrittweite von 2 in jeder Schleife, wodurch die Prüfung nur aus ungeraden zahlen besteht.
InformationsquelleAutor daydreamer | 2014-09-01
Schreibe einen Kommentar