LeetCode第204题Count Primes
Count Primes
Count Primes给出一个数,计算小于这个数的所有的素数个数。例如,输入10
,则10
以内的素数有四个,分别为2
,3
,5
,7
,故返回4
。
求素数的问题相信很多计算机专业的同学在大一刚接触编程的时候一定会碰上,求素数也不难。但是在这里是求素数的个数,一个很简单的思路是调用素数判断的函数,如果是素数则计数加一,最后返回结果。
//Runtime: 548 ms, faster than 13.15% of Java online submissions for Count Primes. |
但是你也看到了,这样的效率并不高,有没有办法让它更高更快更强呢,答案是有的。
首先我们知道,所有的偶数都不是素数,也就是说,我们的n
中有一半都不是素数,即我们的count
最多也就是n/2
。
其次,我们只需要在剩下的一半中寻找素数,或者反向操作寻找不是素数的,然后令count
不断地减减。
// Runtime: 6 ms, faster than 99.32% of Java online submissions for Count Primes. |
是不是更高更快更强了呢。
总结
素数真好玩。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 WenQian Dong's Web!