方式1(基本算法):
public class PrimeNumberTest {
public static void main(String[] args){
long start = System.currentTimeMillis();//用于测试程序所用时间开头
boolean isFlag = true;//标识i是否被j除尽,一旦除尽,修改其值
for(int i = 2; i <= 100000; i++){//遍历100000以内的自然数
for(int j = 2; j < i; j++){
if(i % j == 0){//i被j除尽
isFlag = false;
}
}
if(isFlag == true){
System.out.println(i);
}
//重置isFlag
isFlag = true;
}
long end = System.currentTimeMillis();//用于测试程序所用时间结果
System.out.println("所花费的时间为:" + (end - start));//用于计算测试程序所用总时间
}
}
方式2(算法优化一):
public class PrimeNumberTest {
public static void main(String[] args){
long start = System.currentTimeMillis();//用于测试程序所用时间开头
boolean isFlag = true;//标识i是否被j除尽,一旦除尽,修改其值
for(int i = 2; i <= 100000; i++){//遍历100000以内的自然数
for(int j = 2; j < i; j++){
if(i % j == 0){//i被j除尽
isFlag = false;
break;//算法优化一
}
}
if(isFlag == true){
System.out.println(i);
}
//重置isFlag
isFlag = true;
}
long end = System.currentTimeMillis();//用于测试程序所用时间结果
System.out.println("所花费的时间为:" + (end - start));//用于计算测试程序所用总时间
}
}
方式3(算法优化二):
public class PrimeNumberTest {
public static void main(String[] args){
long start = System.currentTimeMillis();//用于测试程序所用时间开头
boolean isFlag = true;//标识i是否被j除尽,一旦除尽,修改其值
for(int i = 2; i <= 100000; i++){//遍历100000以内的自然数
//算法优化二:对本身是质数的自然数是有效的
for(int j = 2; j < Math.sqrt(i); j++){
if(i % j == 0){//i被j除尽
isFlag = false;
break;//算法优化一
}
}
if(isFlag == true){
System.out.println(i);
}
//重置isFlag
isFlag = true;
}
long end = System.currentTimeMillis();//用于测试程序所用时间结果
System.out.println("所花费的时间为:" + (end - start));//用于计算测试程序所用总时间
}
}