Я хочу суммировать все простые числа, которые имеют значение меньше 10.Java Prime эффективность искателя
Это мой код:
boolean kontroll = true;
long limit = 10;
long checker = 2;
long sum = 0;
while (checker < 10) {
for (long i = 3; i < Math.sqrt(checker); i += 2) {
if (checker % 2 == 0) {
kontroll = false;
break;
} else {
if (checker % i == 0) {
kontroll = false;
}
}
} if (kontroll) {
sum += checker;
System.out.println("Prim: " + checker);
}
checker++;
kontroll = true;
}
System.out.println(sum);
я получаю этот выход:
Prim: 2
Prim: 3
Prim: 4
Prim: 5
Prim: 6
Prim: 7
Prim: 8
Prim: 9
44
Что не так с этой сборкой? Если я удалю Math.sqrt(checker);
, программа работает, но работает медленно. Разве я не могу взять квадратный корень шашки?
Присвоить ** поплавка Q = Math.sqrt (Накладной); ** перед оператором в то время, то есть ** для (долго я = 2; я <д, I + = 2) ** вместо этого. Это должно ускорить ваш код. –
@ArifBurhan Почему вы используете 'float'? – MikeCAT
@Aminorph: Ваша программа неправильно идентифицирует простые числа и, следовательно, сумма также неверна. Я думаю, что это отчасти потому, что вы установили «kontroll = true» в конце цикла while и в следующей итерации, если цикл for не выполняется даже один раз, то следующий номер всегда будет использоваться для вычисления суммы – greenPadawan