回复 楼主 hllSaturn
#include "stdio.h"
#include "math.h"
int main(int argc, char* argv[])
{
int n,m,i,j,x;
int a[1000];
//在此条件下要求n小于1000
int prime[11] = {2,3,5,7,11,13,17,19,23,29,31};
do
{
scanf("%d",&n);
//所求即为小 于n的所有素数
if(n<2 || n>1000)
printf("您的输入有误,请重新输入!\n");
}
while(n<2 || n>1000);
for(i=0; i<n; i++)
{
//数据元素初 始化
a[i] = i+1;
}
for(i=n; i<1000; i++)
{
a[i] = 0;
}
int temp=(int)sqrt(n);
//n内必含小 于根号n的素数
int note=0;
for(j=0; j<11; j++)
{
if(prime[j]<temp)
note++;
}
for(m=0; m<note; m++)
{
for(x=0; x<n; x++)
{
if(a[x] % prime[m] == 0)
a[x]=0;
}
}
printf("----------------------------%d 以内的素数如下所示 ----------------------------\n",n);
for(m=0; m<note; m++)
printf("%d
",prime[m]);
for(m=0; m<n; m++)
{
if(a[m] != 0 && a[m]>temp)
printf("%d ",a[m]);
}
printf("\n-----------------------------------------------------------------------------\n");
return 0;
}