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