源代码如下
如果是100以内,只需将i<=100000改为i<=100
class ZhiShuText{
public static void main(String[] arges){
//输出100000以内的所有的质数
for(int i=2;i<=100000;i++){//遍历2-100000以内的所有数i
boolean isFlag =true;//要么是质数要么不是,所以定义布尔型变量,true为质数,false为不是质数
for(int j=2;j<=Math.sqrt(i);j++){ //优化方法二:对本来就是质数的数有效
//for(int j=2;j<i;j++){//让i%(2到i-1的所有的数)看是不是有等于0的情况
if(i%j==0){
isFlag =false;//如果等于了0,那不是质数
break; // 优化方法一:对不是质数的数有效
}
}
if(isFlag == true){//i%(2到i-1的所有的数)以后依旧是true,所以为质数
System.out.println(i);//输出这个数
}
}
}
}
测时间的代码:
定义num来接收时间;
引入时间的计算:long start = System.currentTimeMillis();//获取当前时间距离1970.01.01 00:00:00的毫秒数
class ZhiShuText{
public static void main(String[] arges){
//输出100000以内的所有的质数
int num = 0;
long start = System.currentTimeMillis();//获取当前时间距离1970.01.01 00:00:00的毫秒数
for(int i=2;i<=100000;i++){//遍历2-100000以内的所有数i
boolean isFlag =true;//要么是质数要么不是,所以定义布尔型变量,true为质数,false为不是质数
for(int j=2;j<=Math.sqrt(i);j++){ //优化方法二:对本来就是质数的数有效
//for(int j=2;j<i;j++){//让i%(2到i-1的所有的数)看是不是有等于0的情况
if(i%j==0){
isFlag =false;//如果等于了0,那不是质数
break; // 优化方法一:对不是质数的数有效
}
}
if(isFlag == true){//i%(2到i-1的所有的数)以后依旧是true,所以为质数
num++;
//System.out.println(i);//输出这个数
}
}
System.out.println("质数有 "+num+" 个");
long end = System.currentTimeMillis();//获取当前时间距离1970.01.01 00:00:00的毫秒数
System.out.println("所用时间="+(end-start)+"ms");
}
}
结论:
输出100000以内的所有的质数的时间:
优化前:17326ms--->优化方法一后:2044ms--->优化方法二后:737ms 但是显示器的输出依然会影响时间
不输出每个数,只输出有多少个质数时的时间:
优化前:12890ms--->优化方法一后:1205ms--->优化方法二后:11ms 可见当计算量大时,代码的质量会很影响时间