先算一下多大的正整数范围内有超过10000个素数
#include<stdio.h>
#define MAX 120000
//calculate the number of positive prime numbers smaller than 100000
int main()
{
int a[MAX]={0};
int i,j,count=0;
for(i=2;i<MAX;i++)
{
for(j=2*i;j<MAX;j+=i)
{
a[j]=1;
}
}
for(i=2;i<MAX;i++)
if(!a[i])
count++;
printf("%d\n",count);
return 0;
}
有11301个
再做题
把素数存入数组b[], b[i]是第i-1个素数
#include<stdio.h>
#define MAX 120000
int main()
{
int a[MAX]={0};
int b[12000]={0};
int i,j,count=0;
int M,N;
for(i=2;i<MAX;i++)
{
for(j=2*i;j<MAX;j+=i)
{
a[j]=1;
}
}
for(i=2;i<MAX;i++)
if(!a[i])
{
b[count++]=i;
}
scanf("%d%d",&M,&N);
count=0;
for(i=M-1;i<N;i++)
{
count++;
printf("%d",b[i]);
if(count%10==0||i==N-1)
printf("\n");
else
printf(" ");
}
return 0;
}