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