В результате я получаю 9
, где я должен получать 11
!Я не могу понять свою ошибку в моем PrimeGenerator
Это происходит после пятого звонка до nextPrime()
. Каждый другой результат правильный, за исключением 5-го! Я пытаюсь определить свою ошибку в течение нескольких часов. Извините, если мой код неаккуратный, это то, как мой разум понял проблему! Требовалось использовать контур, управляемый флагом.
public class PrimeGenerator
{
private int num = 2;
public PrimeGenerator()
{
}
public int nextPrime()
{
boolean done = false;
for (int n = num; !isPrime(num); n++)
num = n;
if (isPrime(num))
{
done = true;
}
if (done)
{
int prime = num;
num++;
return prime;
}
return num;
}
public static boolean isPrime(int n)
{
boolean result = true;
for (int i = 2; n % i == 0 && i < n; i++)
result = false;
if (n == 2)
result = true;
return result;
}
}
Мой тестер просто вызывает метод nextPrime()
и выводит результат.
Ваш метод 'isPrime' нарушен. –
'for (int n = num;! IsPrime (num); n ++) num = n;' почти наверняка не то, что вы хотите. – NPE