//高效率的打表看不懂..来个简单的模板
void init_prime()
{
int i, j;
for(i = 2;i <= sqrt(1000002.0); ++i)
{
if(!prime[i])
for(j = i * i; j < 1000002; j += i)
prime[j] = 1;
}
j = 0;
for(i = 2;i <= 1000002; ++i)
if(!prime[i])
prime[j++] = i;
}
//素数打表
#include<stdio.h>
#include<math.h>
int p[100000];
int pn[100000];
void init_num()
{
int i,j,n;
for(i=0;i<100000;i++)
p[i]=1;
n = (int)sqrt(1000000.00);
for(i=2;i<=n;i++)
{
for(j=i*i;j<=n;j+=i)
{
p[j]=0;
}
}
j=1;
for(i=1; i<=n; i++) //把素数存储入pn[N],下表从1开始
{
if(p[i])
{
pn[j++]=i;
}
}
}
int main()
{
int i;
init_num();
//打印前100个素数
for(i=1;i<=100;i++)
printf("%d ",pn[i]);
return 0;
}