标签:
30. 蛤蟆的数据结构笔记之三十数组之厄拉多塞筛
本篇名言:“勤劳远比黄金可贵。 -- 萨迪”
厄拉多塞是一位古希腊数学家,他在寻找素数时,采用了一种与众不同的方法:先将2-N的各数放入表中,然后在2的上面画一个圆圈,然后划去2的其他倍数;第一个既未画圈又没有被划去的数是3,将它画圈,再划去3的其他倍数;现在既未画圈又没有被划去的第一个数是5,将它画圈,并划去5的其他倍数……依次类推,一直到所有小于或等于N的各数都画了圈或划去为止。这时,表中画了圈的以及未划去的那些数正好就是小于 N的素数。
PS:质数(prime number)又称素数,有无限个。一个大于1的自然数,除了1和它本身外,不能被整除以其他自然数(质数),换句话说就是该数除了1和它本身以外不再有其他的因数;否则称为合数。
运行如下:
代码中N表示求多少数内的素数。
#include "stdio.h"
#include "malloc.h"
#define N10000
void main()
{
inti,j,a[N+1];
//初始化为1
for(i=2;i<N+1;i++)
a[i]=1;
for(i=2;i<N+1;i++)
if(a[i])
for(j=i;j<=N/i;j++)a[i*j]=0;
//输出
for(i=2;i<N;i++)
if(a[i])
printf("%4d ",i);
printf("\n");
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:
原文地址:http://blog.csdn.net/notbaron/article/details/46835021