Вот что у меня естьСумма первых 1000 простых чисел неверна? что не так?
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;
}
}
Что я получаю
76127
Однако правильный ответ
3682913
Ссылка: http://www.wolframalpha.com/input/?i=sum+first+1000+prime+numbers&x=0&y=0
Я не в состоянии определить ошибка в моем коде, любая помощь здесь?
«Сумма первых 1000 простых чисел» - это не то же самое, что [«сумма всех простых чисел <= 1000»] (http://www.wolframalpha.com/input/?i=sum+primes+ % 3C% 3D + 1000) – Blorgbeard
Вы можете сделать это немного более эффективным, запустив сумму на 2, i на 3 и вернув false в isPrime для всего, что кратно 2. Тогда вы можете запустить isPrime i на 3, и увеличивать на 2 в каждом цикле, тем самым проверяя только нечетные числа. – graemeboy