java 质数 优化,求100000以内的质数的优化(Java版)

求100000以内的质数的优化过程(Java版)

版本一(优化之前):

class PrimeNumberTest2

{

public static void main(String[] args)

{

long start = System.currentTimeMillis();//记录开始的时间,以毫秒。

boolean isFlag = true;

int count = 0;//记录质数的个数

for (int i=1;i<=100000 ;i++ )//遍历1到100000个数

{

for (int j = 2;j < i ;j++ )

{

if(i % j == 0)//进行逐个判断

isFlag = false;

}

if (isFlag)

{

System.out.println(i);

count++;

}

isFlag = true;

}

long end = System.currentTimeMillis();//记录结束的时间

System.out.println("质数的个数" + count);

System.out.println("所花费的时间" + (end - start));

}

}

下面是执行后所用的结果及时间:

c45cfb8fedeb89a21b3d611e33126581.png

运行时间为:18496毫秒(不同计算机可能有差别,但是应该很小)

版本二(优化一):

class PrimeNumberTest2

{

public static void main(String[] args)

{

long start = System.currentTimeMillis();//记录开始的时间,以毫秒。

boolean isFlag = true;

int count = 0;//记录质数的个数

for (int i=1;i<=100000 ;i++ )//遍历1到100000个数

{

for (int j = 2;j < i ;j++ )

{

if(i % j == 0){//进行逐个判断

isFlag = false;

break;//优化一:针对非质数进行优化

}

}

if (isFlag)

{

System.out.println(i);

count++;

}

isFlag = true;

}

long end = System.currentTimeMillis();//记录结束的时间

System.out.println("质数的个数" + count);

System.out.println("所花费的时间" + (end - start));

}

}

下面是执行后所用的结果及时间:

5dac02be6e67ea5366db78e4c3d84223.png

运行时间为:2140毫秒(不同计算机可能有差别,但是应该很小)

版本三(优化二):

class PrimeNumberTest2

{

public static void main(String[] args)

{

long start = System.currentTimeMillis();//记录开始的时间,以毫秒。

boolean isFlag = true;

int count = 0;//记录质数的个数

for (int i=1;i<=100000 ;i++ )//遍历1到100000个数

{

for (int j = 2;j <= Math.sqrt(i) ;j++ )//优化二:减少循环次数,针对本身就是质数的优化

{

if(i % j == 0){//进行逐个判断

isFlag = false;

break;//优化一:针对非质数进行优化

}

}

if (isFlag)

{

System.out.println(i);

count++;

}

isFlag = true;

}

long end = System.currentTimeMillis();//记录结束的时间

System.out.println("质数的个数" + count);

System.out.println("所花费的时间" + (end - start));

}

}

下面是执行后所用的结果及时间:

a3a8ddbd2629b641adeb30c5ecd3dc81.png

运行时间为:537毫秒(不同计算机可能有差别,但是应该很小)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值