打印质数的各种算法

阅读更多
.

打印质数的各种算法: http://coolshell.cn/articles/3738.html

部分文摘:

较好的算法

我们知道,我们的算法如果写成线性算法,也就是O(n),已经算是不错了,但是最好的是O(Log(n))的算法,这是一个对数级的算法,著名的二分取中(Binary Search)正是O(Log(n))的算法。通常来说,O(Log(n))的算法都是以排除法做为手段的。所以,找质数的算法完全可以采用排除法的方式。如下所示,这种算法的复杂度是O(n(log(logn)))。

示例:打印30以内的质数

一、初始化如下列表。

2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
二、把第一个数(2)取出来,去掉所有可以被2整除的数。

2  3     5     7     9    11    13    15    17    19    21    23    25    27    29
三、取第二个数(3),去掉所有可以被 3整除的数。

2  3     5     7          11    13          17    19          23    25          29
四、取第三个数(5),因为4已经被去除了,再去掉所有可以被5整除的数。

2  3     5     7          11    13          17    19          23                29
接下来的数是7,但是7的平方是49,其大于了30,所以我们可以停止计算了。剩下的数就是所有的质数了。




.

你可能感兴趣的:(算法,HTML)