分享一个比较经典的素数求法:
假如要求你输出2到2000000(百万)内所有的素数,如果选择普通的方法的话肯定超时;
所以我邀介绍一下下面的筛选法了(哈哈。。。)
#include<stdio.h>
#include<string.h>
#define N 2000001
int a[N];
void initi()
{
int i, tmp;
memset(a, 0,sizeof(a));
a[0] = 1;
a[1] = 1;
for(i=2;i
{
if(!a[i])
{
tmp =i*2;
while(tmp< 2000001)
{
a[tmp] = 1;
tmp += i;
}
}
}
}
int main()
{
int n;
initi();
while(scanf("%d",&n)&&n!=0)
{
for(int i=2;i<=n;i++)
if(!a[i])
printf("%d ",i);
puts("");
}
}