2019-05-28
#include "stdio.h"
#include "math.h"
int main(int argc, char* argv[])
{
int n,m,i,j,x,temp,note,k=0;
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("您的输入有误,请重新输入!");
}while(n<2 || n>1000);
for(i=0;i<n;i++) {//数据元素初始化
a[i] = i+1;
}
for(i=n;i<1000;i++) {
a[i] = 0;
}
temp=(int)sqrt(n);//n内必含小于根号n的素数
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);
for(m=0;m<note;m++)
{
printf("%d ",prime[m]);
k++;
if(k%10==0)printf("");
}
for(m=0;m<n;m++) {
if(a[m] != 0 && a[m]>temp)
{
printf("%d ",a[m]);
k++;
if(k%10==0)printf("");
}
}
printf("-----------------------------------------------------------------------------");
return 0;
}
#include "stdio.h"
#include "math.h"
int main(int argc, char* argv[])
{
int n,m,i,j,x,temp,note,k=0;
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("您的输入有误,请重新输入!");
}while(n<2 || n>1000);
for(i=0;i<n;i++) {//数据元素初始化
a[i] = i+1;
}
for(i=n;i<1000;i++) {
a[i] = 0;
}
temp=(int)sqrt(n);//n内必含小于根号n的素数
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);
for(m=0;m<note;m++)
{
printf("%d ",prime[m]);
k++;
if(k%10==0)printf("");
}
for(m=0;m<n;m++) {
if(a[m] != 0 && a[m]>temp)
{
printf("%d ",a[m]);
k++;
if(k%10==0)printf("");
}
}
printf("-----------------------------------------------------------------------------");
return 0;
}