全部问题 > 当前问题

我想输出100以内的质数,为什么下面程序输不出来

#include<stdio.h>

#include <math.h>

main()

{

int a[101]={1,1},i,j;

for(i=2;i<=sqrt(100);i++)

if(a[i]==0)

for(j=i+1;j<=100;j+=i)

{

a[j]=1;

}

for(i=0;i<=100;i++)

{

if(a[i]==0) printf("%5d",i);

}

printf("\n");

}


一只猪的感慨 2016-2-17 09:44:44

共 2 个回答

懂不懂 2016-2-17 09:56:28

main()


{


int a[101]={1,1},i,j;


for(i=2;i<=sqrt(100);i++)


for(j=i+i;j<=100;j+=i)


{


a[j]=1;


}


for(i=0;i<=100;i++)


{


if(a[i]==0) printf("%5d",i);


}


printf("\n");

}

第一个if(a[i]==0)可以不要,第二个循环j=i+1改成j=2i

最佳答案

嘿嘿大人 2016-2-17 09:57:38

代码有点小错误

#include<stdio.h>


#include <math.h>


main()


{


int a[101]={1,1},i,j;


for(i=2;i<=sqrt(100);i++)


if(a[i]==0)


for(j=i+i;j<=100;j+=i)


{


a[j]=1;


}


for(i=0;i<=100;i++)


{


if(a[i]==0) printf("%5d",i);


}


printf("\n");


}


问题来自: 质数