精选问答
用Eratosthenes筛法求n(n≤10000)以内的所有素数,按每行10个素数的格式将它们输出 .

2019-05-28

用Eratosthenes筛法求n(n≤10000)以内的所有素数,按每行10个素数的格式将它们输出 .
优质解答

#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;

}

相关标签: 素数 格式 它们
相关问答