Als ich ein Problem für Project Euler löste, bat es mich, alle Primzahlen unter 2 Millionen zusammenzufassen. Hier ist mein Code:
%Vor% Dieser Code führt zur richtigen Antwort, 142913828922.
Aber wenn ich die for-Schleife in isPrime()
zu:
Es führt zu falschen Ergebnissen wie 142913828920 und 142913828917, etc.
Warum geht es schief? Theoretisch ändert es nicht die Zahl isPrime()
sendet an main()
, oder?
Wenn Sie die Summe von 142913828922
in 142913828920
geändert haben, dann ist der Unterschied 2
, was bedeutet, dass Sie 2
als nicht primieren interpretieren. Das Ändern von sq
in sq+1
sollte diesen Unterschied erreichen. Wenn Sie es in sq+2
ändern, wird 3
nicht primiert.
und so weiter.