判断101-200之间,有多少个质数 ,并输出所有素数

判断101-200之间,有多少个质数 ,并输出所有素数

代码块


```java
public class Test3 {
    public static void main(String[] args) {
        //思路一 :2~99
        //定义变量i ,赋值100
        //判断i是否为质数

        //定义一个变量用来统计有多少个质数
        int count = 0;
        for (int i = 101; i <= 200; i++) {
            //i 表示循环里面的每一个数字
            //继续判断i是否为一个质数
            boolean flag = true;
            for (int j = 2; j < i; j++) {
                //j 表示2~99之间的每一个数字
                if (i % j == 0) {
                    flag = false;
                    break;
                }
            }
            if (flag) {
                System.out.println("当前数字" + i + "是质数");
                count++;
            }
        }
        System.out.println("一共有多少" + count + "个质数");
    }
}
 # 运行结果 :
当前数字是质数
当前数字是质数
当前数字是质数
当前数字是质数
当前数字是质数
当前数字是质数
当前数字是质数
当前数字是质数
当前数字是质数
当前数字是质数
当前数字是质数
当前数字是质数
当前数字是质数
当前数字是质数
当前数字是质数
当前数字是质数
当前数字是质数
当前数字是质数
当前数字是质数
当前数字是质数
当前数字是质数
21

# 请教各路大神,第二个 for 循环判断是否为一个质数的思路是怎么样的?是如何解析的? 

第二个for循环就是取你i的值,然后依次去除以2,3,4....一直到i-1 求模,如果取模为0,则表示是可以除尽的,那就说明不是质数, flag = false;跳出循环,如果都不为0,则不会改变flag的值,flag是true 就是质数

判断这个数字除以2~它自己,如果都不能整除就算质数,如果能整除就不是
质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。又称为素数


public class PrimeNumbers {
    public static void main(String[] args) {
        int count = 0;
        for (int i = 101; i <= 200; i++) {
            boolean isPrime = true;
            for (int j = 2; j < i; j++) {
                if (i % j == 0) {
                    isPrime = false;
                    break;
                }
            }
            if (isPrime) {
                System.out.println(i);
                count++;
            }
        }
        System.out.println("101-200之间有" + count + "个质数");
    }
}


public class PrimeNumber {
    public static void main(String[] args) {
        int count = 0;
        for (int i = 101; i <= 200; i++) {
            if (isPrime(i)) {
                System.out.print(i + " ");
                count++;
            }
        }
        System.out.println();
        System.out.println("101-200之间共有" + count + "个素数");
    }

    // 判断一个数是否为质数
    public static boolean isPrime(int n) {
        if (n <= 1) {
            return false;
        }
        for (int i = 2; i <= Math.sqrt(n); i++) {
            if (n % i == 0) {
                return false;
            }
        }
        return true;
    }
}