全部问题 > 当前问题

#include <stdio.h> #include <math.h> main() { int a[101]={1,1},i,j;/*将a[0],a[1]初始化为1*/ for(i=2;i<=sqrt(100);i++) if(a[i]==0) for(j=i+1;j<=100;j+=i)/*将2的倍数赋值为1,然后将3,4,……的倍数都赋值为1,剩下的即为质数*/ { a[j]=1; } for(i=0;i<=100;i++) { if(a[i]==0) printf("%5d",i); } printf("\n"); }

这个程序哪儿出错了blob.png 为什么运行出来是这?而不是质数呢?

邢慧雅 2015-7-29 16:15:47

共 3 个回答

祁老师 2015-8-1 13:47:06

你的完整程序发出来我看看

邢慧雅 2015-8-1 14:26:23

回复 祁老师

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

}


最佳答案

祁老师 2015-8-1 14:35:21

  for(j=i+1;j<=100;j+=i)  应该是  for(j=i+i;j<=100;j+=i)

问题来自: 质数