题目:统计所有小于非负整数 n 的质数的数量。质数定义:只能被1和其本身整除的数,是质数,最小的质数是2。 本篇经验将分享两个算法,一个是逐个判断算法,其时间复杂度为 O(N²),另一个是排除算法,其时间复杂度为 O(NlogN)。
工具/原料
1
Eclipse
2
JDK1.8
方法/步骤
1
实现判断一个数字是否是质数的方法图示,从2开始遍历,直到参数的开方根,判断是否有数字是参数的因子,如果存在,则该参数不是质数,否则就是质数。
2
实现逐个判断算法图示,从2开始遍历数字区间,并调用上述方法判断当前数字是否是质数,统计区间内所有质数的数量。
3
测试逐个判断算法图示,主方法中调用该算法获取指定参数区间内的质数数量,并打印到控制台,观察输出,符合预期。
5
实现排除算法算法思想:对于一个质数,其倍数一定不是质数,根据这个思想,创建一个参数大小的boolean数组,从第一个质数2开始遍历,如果当前是质数,则将其所有倍数全部更新为非质数即可。
6
测试排除算法图示,观察控制台输出,符合预期
7
平台提交排除算法图示,测试通过,并且相比逐个判断算法,该算法性能也有了很大的提升。
注意事项
只能被1和其本身整除的数,是质数,最小的质数是2