标题:筛法找出素数


素数就是质数。它除了能表示为它自己和1的乘积以外,不能表示为任何其他两个整数的乘积。

问题1:找出40000以内的所有素数。

   

分析:求不超过自然数N的所有素数的常用方法就是著名的筛法。所谓筛法,是求不超过自然数NN1)的所有质数的一种方法。据说是古希腊的埃拉托斯特尼(Eratosthenes,约公元前274194年)发明的,又称埃拉托斯特尼筛子。

具体做法是:先把N个自然数按次序排列起来。1不是质数,也不是合数,要划去。第二个数2是质数留下来,而把2后面所有能被2整除的数都划去。2后面第一个没划去的数是3,把3留下,再把3后面所有能被3整除的数都划去。3后面第一个没划去的数是 5,把5留下,再把5后面所有能被5整除的数都划去。这样一直做下去,就会把不超过N的全部合数都筛掉,留下的就是不超过N的全部质数。因为希腊人是把数写在涂腊的板上,每要划去一个数,就在上面记以小点,寻求质数的工作完毕后,这许多小点就像一个筛子,所以就把埃拉托斯特尼的方法叫做“埃拉托斯特尼筛”,简称“筛法”。

下面就是筛法的具体实现:

 

#define MAXN 40000

int SPrime(void)

{

}

注意:算法部分是麦洛科菲基础部分重点培训的内容,每一个点都可能成为麦洛科菲考试,作业的组成部分。所以,我们不提供具体的解法。如果您对某个点有疑问,请随时联系我们。


看文字不过瘾?点击我,进入周哥教IT视频教学
麦洛科菲长期致力于IT安全技术的推广与普及,我们更专业!我们的学员已经广泛就职于BAT360等各大IT互联网公司。详情请参考我们的 业界反馈 《周哥教IT.C语言深学活用》视频

我们的微信公众号,敬请关注