Java经典例题50题 ----2 、素数的判断

**

素数的判断

** 【程序 2】 题目:判断 101-200 之间有多少个素数,并输出所有素数。 程序分析:判断素数的方法:用一个数分别去除 2 到 sqrt(这个数),如果能被整除, 则表明 此数不是素数,反之是素数。

本题参考了: 的博客

求素数虽然已经不是第一次做了,但是从中在学习的过程中,看到上面说的博主的布尔值数组,下标存数的方式对我这样的小萌新来说也是耳目一新的,也算一种收获吧。

/**
 * @program: prime number judgment
 * @description: 素数判断程序入口
 * @author: Mr.XiaoShi
 * @create: 2020-08-27 22:05
 **/

/**
 * 【程序 2】
 * 题目:判断 101-200 之间有多少个素数,并输出所有素数。
 * 程序分析:判断素数的方法:用一个数分别去除 2 到 sqrt(这个数),如果能被整除, 则表明
 * 此数不是素数,反之是素数。
 * **/

public class Program {
          
   
    public static void main(String[] args) {
          
   
        int primeNum;  //用来暂时存储素数
        int tmp = 0;   //用来记录已经输出素数的个数
        System.out.println("题目:判断 101-200 之间有多少个素数,并输出所有素数。
答:");
        for (int i = 101; i < 200; i++) {
          
   
            primeNum = i;
            //我当时所能想到的方法,对小于所需要判断的数的一半的数分别求模来判断
           /* for (int j = 2; j < i/2; j++) {
                if (primeNum % j == 0){    //如果存在能被整除的,就把存素数的变量primeNum清零,提前退出循环
                    primeNum = 0;
                    break;
                }
            }*/
            //这是题目程序分析的方法。当时我也不知道为什么,网上找了下原因(我个人觉得这个应该都能看懂):
            // 附上它的连接:https://blog..net/sinat_36301420/article/details/81058838
            for (int j = 2; j <= Math.sqrt(i); j++) {
          
   
                if (primeNum % j == 0){
          
   
                    primeNum = 0;
                    break;
                }
            }
            //这里记录一下输出的个数,为了美观每五个数换一次行
            if (primeNum != 0) {
          
   
                System.out.print(primeNum + "   ");
                if (++tmp % 5 == 0)
                    System.out.println();
            }
        }
    }
}

运行结果:

经验分享 程序员 微信小程序 职场和发展