我的 Java 代码:import java.util.Scanner;public class PrimeNumbers {public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("Введите целое число: "); int n = scanner.nextInt(); boolean isPrime = false; for (int i = 2; i <= n; i++) { for (int j = 2; j < i; j++) { if (i % j == 0) { isPrime = false; break; } else { isPrime = true; } } if (isPrime) { System.out.println(i); } }}}但是我的老师说我应该将布尔变量移动到循环中。这将简化代码。但我不明白该怎么做。
1 回答
白板的微信
TA贡献1883条经验 获得超3个赞
你的老师说的是这一行:
boolean isPrime = false;
需要移动到评论所在的循环中。您显然正在寻找 2 和 n 之间的所有素数。您的循环变量 'i' 是要测试的素数,无论它是否是素数,false每次开始迭代测试时都需要初始化。
for (int i = 2; i <= n; i++) {
// NEEDS TO BE RIGHT HERE -
boolean isPrime = true;
// You are finding Prime Numbers, and the outer-loop (loop-var 'i')
// Means the 'isPrime' needs to be re-initialized each time you start testing
// whether a certain number, i, is prime or not!
for (int j = 2; j < i; j++)
if (i % j == 0) { isPrime = false; break; }
// and this line needs to be removed completely.
// else { isPrime = true; }
if (isPrime) System.out.println(i);
}
添加回答
举报
0/150
提交
取消