/*
100000以内的质数:从2到n-1都不能被n整除
最小的质数是2
*/
方法一:
class PrimeNum{
public static void main(String[] args) {
/*
for(int i = 2; i <= 100;i++ ){
boolean isFlag = true;//表示i是否被j除尽
for (int j =2;j <= i-1 ;j++ ){
if (i % j == 0){
isFlag = false;
}
}
if (isFlag == true){
System.out.println(i);
}
// isFlag = true;
}
*/
boolean isFlag = true;//表示i是否被j除尽
int count = 0;
//获取当前时间距离1970-01-01 00:00:00的毫秒数
long start = System.currentTimeMillis();
for(int i = 2; i <= 100000;i++ ){
//for (int j =2;j <= i-1 ;j++ ){
//优化二:对本身是质数的数有效
for (int j =2;j <= Math.sqrt(i) ;j++ ){
if (i % j == 0){
isFlag = false;
break;//优化一:一旦能被j除尽,就不算j之后的了,只对本身非质数的数有效
}
}
if (isFlag == true){
//System.out.println(i);
count ++;
}
isFlag = true;
}
long end = System.currentTimeMillis();
System.out.println("个数" + count);
System.out.println("所花费的时间" + (end - start));
//时间:21015,优化一:1938,优化二:16.
}
}
//方法二
class Prime2 {
public static void main(String[] args) {
int count = 0;
//获取当前时间距离1970-01-01 00:00:00的毫秒数
long start = System.currentTimeMillis();
label:for(int i = 2; i <= 100000;i++ ){
//for (int j =2;j <= i-1 ;j++ ){
//优化二:对本身是质数的数有效
for (int j =2;j <= Math.sqrt(i) ;j++ ){
if (i % j == 0){
continue label;
}
}
//能执行到此步骤的都是质数
count ++;
}
long end = System.currentTimeMillis();
System.out.println("个数" + count);
System.out.println("所花费的时间" + (end - start));//时间15
}
}