Хорошо, что моя проблема меньше того, как выяснить, является ли число простым, потому что я думаю, что я понял это, но больше того, как заставить его отображаться правильно.Как определить, является ли число простым
Вот мой код:
public static void main(String[] args) {
// Declare Variables
int randomNumbers = 0;
int sum = 0;
//Loop for number generation and print out numbers
System.out.print("The five random numbers are: ");
for (int i = 0; i <= 4; i++)
{
randomNumbers = (int)(Math.random()*20);
sum += randomNumbers;
if (i == 4) {
System.out.println("and " + randomNumbers + ".");
}
else {
System.out.print(randomNumbers + ", ");
}
}
//Display Sum
System.out.println("\nThe sum of these five numbers is " + sum + ".\n");
//Determine if the sum is prime and display results
for(int p = 2; p < sum; p++) {
if(sum % p == 0)
System.out.println("The sum is not a prime number.");
else
System.out.println("The sum is a prime number.");
break;
}
}
}
Теперь моя проблема, если число заканчивается время что-то вроде 9, это будет сказать, что это простое число, что это не так. Я думаю, что проблема заключается в том, что прерывание останавливает его после одного цикла, поэтому он не увеличивает переменную p, так что только тестирование делит на 2 (я думаю). Но если я удалю точку прерывания, она распечатает «Сумма - это не простое число» на каждом проходе до выхода из цикла. Не уверен, что делать здесь.
Очень полезно, хотя вы оставили перерыв; там, и это меня испортило, пока я не понял, что мне нужно избавиться от него. Спасибо за тонну за помощь! – senpaimaster
Перерыв, чтобы выйти из цикла в первый раз, когда он находит фактор, так как ему больше не нужно искать. – Unamanic
Ваша логика правильная, но она не оптимизирована. Поэтому перебираем цикл 'for' только до квадратного корня из числа, а не до числа. И увеличивайте переменную цикла 'for' (начиная с 3) на 2, а не на 1. Я отправил ответ, пожалуйста, обратитесь к этому для более подробной информации. –