为了账号安全,请及时绑定邮箱和手机立即绑定

我的老师说我应该将布尔变量移动到循环中。但我不明白该怎么做

我的老师说我应该将布尔变量移动到循环中。但我不明白该怎么做

慕桂英4014372 2021-11-24 14:41:34
我的 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);

}


查看完整回答
反对 回复 2021-11-24
  • 1 回答
  • 0 关注
  • 106 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信