Мне нужно построить метод, который вычисляет простые числа.Метод поиска простых чисел
Я тестирую его, и это дает мне неправильные ответы, и я не знаю, как его решить! Например, он возвращает true
- 98262679 вместо false
. Где моя ошибка?
public static boolean itsPrime(int nbTest){ // Tests for prime numbers method
boolean prime = false;
if (nbTest <= 1){
return false;
} else if (nbTest == 2){ // Two is prime
return true;
} else if ((nbTest != 2) && (nbTest % 2 == 0)){ // Evens except number 2
return false; // are not prime
} else if (nbTest % 2 != 0){ // For all remaining odds
for(int i = 3; i <= Math.sqrt(nbTest); i = i+2){
if (nbTest % i == 0){
prime = false;
} else {
prime = true;
}
}
}
return prime;
}
Я учусь Java и мой профессор попросил нас построить метод itsPrime
был основан на следующем:
For the first subtask, write a function `itsPrime` that takes an `int`
as argument and returns a `boolean`, `true` if the argument integer is prime
and `false` otherwise.
To test whether an integer x is prime, one can proceed as follows:
all integers less than or equal to 1 are not prime;
2 is prime;
all other even integers are not prime;
for all remaining integers (obviously odd), search for a divisor:
loop from 3 to the square root of the integer x (The square root of x can
be computed as ‘‘Math.sqrt(x)'' in Java.); if the remainder of the integer
division of x by the loop index is zero, then x is not prime;
if all remainders were non-zero at the end of the loop, then x is prime;
Вам нужен 'break', чтобы остановить' for' петлю после того как вы» ve определяется 'prime' является' false' ('prime = false'). В противном случае вы получите результат последнего теста divisor в цикле 'for'. – lurker