【发布时间】:2013-02-07 08:21:51
【问题描述】:
我对编程很陌生,我被要求使用while 循环查找给定范围内的素数之和。如果输入为 5,则答案应为 28 (2+3+5+7+11)。我试着写代码,但似乎逻辑不对。
代码
#include <stdio.h>
int main()
{
int range,test;
int sum = 2;
int n = 3;
printf("Enter the range.");
scanf("%i",range);
while (range > 0)
{
int i =2;
while(i<n)
{
test = n%i;
if (test==0)
{
goto end;
}
i++;
}
if (test != 0)
{
sum = sum + test;
range--;
}
end:
n++;
}
printf("The sum is %i",sum);
return 0;
}
如果你能指出我的错误并可能告诉我如何从那里开始,那就太好了。
【问题讨论】:
-
只是一个快速的代码质量注释 - 不要使用 goto。
-
使用
break代替并删除end:,它应该像以前一样工作 -
我看了一眼你的代码,发现标签“end”在那里,据我记得使用标签被认为是一种不好的风格,因为它使代码修订非常复杂
-
你只需删除 goto 标签,它应该可以工作。
-
如果你需要得到质数之和,为什么要添加最后一次除法的余数呢? (sum = sum +test) 而不是 (sum=sum+n)