我是编程新手,有人要求我使用 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;
}
如果你能指出我的错误并告诉我如何从那里开始,那就太好了。
最佳答案
首先,在 scanf
中使用 &range
而不是 range
scanf("%i",&range);
第二条指令不正确
sum = sum + test;
应该是
sum = sum + n;
还有
while (range > 0)
应该改为
while (range > 1)
因为在您的算法中您已经将范围的第一个元素放在总和 sum = 2
中,所以 while 应该循环 range - 1
次而不是 范围
次
就这样
关于c - 如何在给定范围内找到C中素数的总和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14746603/