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(); } } } }
运行结果: