猿问

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

我的 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);

        }

    }

}

}


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


慕桂英4014372
浏览 107回答 1
1回答

白板的微信

你的老师说的是这一行:boolean isPrime = false;需要移动到评论所在的循环中。您显然正在寻找 2 和 n 之间的所有素数。您的循环变量 'i' 是要测试的素数,无论它是否是素数,false每次开始迭代测试时都需要初始化。for (int i = 2; i <= n; i++) {&nbsp; &nbsp; // NEEDS TO BE RIGHT HERE -&nbsp;&nbsp; &nbsp; boolean isPrime = true;&nbsp; &nbsp; // You are finding Prime Numbers, and the outer-loop (loop-var 'i')&nbsp; &nbsp; // Means the 'isPrime' needs to be re-initialized each time you start testing&nbsp; &nbsp; // whether a certain number, i, is prime or not!&nbsp; &nbsp; for (int j = 2; j < i; j++)&nbsp; &nbsp; &nbsp; &nbsp; if (i % j == 0) { isPrime = false; break; }&nbsp;&nbsp; &nbsp; // and this line needs to be removed completely.&nbsp; &nbsp; // else { isPrime = true; }&nbsp; &nbsp; if (isPrime) System.out.println(i);}
随时随地看视频慕课网APP

相关分类

Java
我要回答