C语言 求100以内素数,不知道哪里错了。求大神指点下

#include<stdio.h>
#include<math.h>
void main()
{
int a,b,c;
for(a=3;a<=100;a++)
{
for(b=2;b<=sqrt(a);b++)
{
if (a%b==0)
{
break;
}
printf("%d\t",a);
}
}
}

编出来结果有质数 还有很多重复的数

第1个回答  2014-03-27
把你的程序改一下就行了。。
#include<stdio.h>
#include<math.h>
void main()
{
int a,b,c;
for(a=3;a<=100;a++)
{
for(b=2;b<=sqrt(a);b++)
{
if (a%b==0)
{
break;
}

}
if(b>sqrt(a)) printf("%d\t",a);
}
getch();
}
第2个回答  2014-03-27
你的printf语句应当是判断a是个素数时才执行,而不是象程序中放到b循环中每测试一个因数就执行一遍,所以请将printf语句搬移到b循环外,并且加条件:if ( b>sqrt(a) ) printf("%d\t",a);追问

谢了。

第3个回答  2014-03-27
#include<stdio.h>
#include<math.h>
void main()
{
    int a,b,c;
    for(a=3;a<=100;a++)
    {
        for(b=2;b<=sqrt(a);b++)
        {
            if (a%b==0)
                    break;
            if(b>sqrt(a))
            printf("%d\t",a);
        }
    }
  }

第4个回答  2014-03-27
楼主程序改下就好了
#include<stdio.h>
#include<math.h>
void main()
{
int a,b,c;
for(a=2;a<=100;a++)
{
for(b=2;b<=sqrt(a);b++)
{
if (a%b==0)
break;
//printf("%d\t",a);
}
if(b>sqrt(a))
            printf("%d\t",a);
}
}

本回答被提问者采纳
相似回答