求100到n间素数和,哪里错了

#include <stdio.h>
#include <math.h>
int main()
{
int i,m,n,a,b;
i=0;m=100;a=2;b=0;
scanf("%d",&n);
for(m=100;m<n;m++)
{
while(a<m/2)
{
if(m%a==0)
{
b=1;
}
a=a+1;
}
if(b==0)
{
i=i+m;
}
}
printf("%d",i);
return 0;
}

看差了,是for循环内每次需要将b恢复设置为0才行。不然只要出现一个非素数,b就成为1,再也改不回来了
for(m=100;m<n;m++)
{
b = 0;
...

每次循环时,变量a,b都需要重新初始化,所以把a=2,b=0放在for循环内即可。


#include <stdio.h>
#include <math.h>
int main()
{
int i,m,n,a,b;
i=0;m=100;
scanf("%d",&n);
for(m=100;m<n;m++)
{
a=2;b=0;
while(a<m/2)
{
if(m%a==0)
{
b=1;
break;
}
a=a+1;
}
if(b==0)
{
i=i+m;
}
}
printf("%d",i);
return 0;
}

修改如下:

#include <stdio.h>
#include <math.h>
int main()
{
    int i, m, n, a, b;
    i = 0;
    m = 100;
    a = 2;
    b = 0;
    scanf("%d", &n);
    for (m = 100; m < n; m++)
    {
        while (a < m / 2)
        {
            if (m % a == 0)
            {
                b = 1;
                break;
            }
            a = a + 1;
        }

        if (b == 0)
        {
            i = i + m;
        }
        a = 2;
        b = 0;
    }
    printf("%d", i);
    return 0;
}

你题目的解答代码如下:(如有帮助,望采纳!谢谢! 点击我这个回答右上方的【采纳】按钮)

#include <stdio.h>
#include <math.h>
int main()
{
    int i, m, n, a, b;
    i = 0;
    m = 100;
    scanf("%d", &n);
    for (m = 100; m <= n; m++)
    {
        a = 2;
        b = 0;
        while (a < m / 2)
        {
            if (m % a == 0)
            {
                b = 1;
                break;
            }
            a = a + 1;
        }
        if (b == 0)
        {
            i = i + m;
        }
    }
    printf("%d", i);
    return 0;
}