文章作者:Tyan
博客:noahsnail.com | CSDN | 简书
1. 素数
质数(Prime number),又称素数,指在大于1的自然数中,除了1和该数自身外,无法被其他自然数整除的数(也可定义为只有1与该数本身两个正因数的数)。大于1的自然数若不是素数,则称之为合数。
2. 求1000000以内的素数
- 方法一 遍历法
1 |
|
分析:上面的方法最容易想到,但同时效率也最低。其运行时间:133.186849 seconds.
。
- 方法二 在上面的基础上进行改进
1 |
|
分析:在上面的基础上,首先我们可以确定除了2之外的偶数都可以排除,同时如果执行到某个数的平方根(邻近的整数)都不能被其整除,则其后的数字都不能被其整除,如果可以整除,则另一个因子必定在平方根之前的数中。其运行时间:0.194340 seconds.
。
- 方法三 筛法
1 |
|
分析:筛法是指假设所有数都为素数,然后遍历,如果其为素数,则其倍数皆为和数,遍历所有数即可。其运行时间:0.021246 seconds.
。
总结:从上面的运行时间可以看出,不同的方法运行时间差异非常大,代码要注意优化。