我想计算101到203之间的偶素数之和。但是我的代码的输出是错误的,输出是52。 任何人都可以帮助我获得正确的输出,在我的代码中,我认为偶数肯定不是素数,这就是我转义它们的原因。我想用这个方法通过 prime 函数来解决它。我应该怎么办?非常感谢
#include <stdio.h>
int prime(int n)
{
int i=2;
int n2;
n2 = n/2;
while (1<=n2) {
if (n%i == 0) {
return 0;
} else {
return 1;
}
i++;
}
}
int main()
{
int sum=0;
for (int i=101; i<=203; i+=2) {
if (prime(i)==1) {
}
sum+=1;
}
printf("%d \n",sum);
return 0;
}
最佳答案
您的代码中有几个问题。
在for
循环中:
for (int i=101; i<=203; i+=2) {
if (prime(i)==1){
}sum+=1;
语句 sum+=1
应该位于 if
block 内。
此外,您还将 1
添加到 sum
中。相反,您应该添加 i
因为您想要素数之和作为结果:
sum+=i;
仅当 while
循环检查条件 n%i == 0
时,函数 prime()
才应返回 1
> 对于 i
的所有值,以及对于 i
的任何值,它都是 true
。因此,您需要将 return 1
移出 while
循环。
此外,在 prime()
的 while
循环中,这是不正确的:
while (1<=n2) {
应该是:
while (i<=n2) {
总的来说,应该是:
#include <stdio.h>
int prime(int n)
{
int i=2;
int n2;
n2 = n/2;
while (i<=n2) {
if (n%i == 0) {
return 0;
}
i++;
}
return 1;
}
int main()
{
int sum=0;
for (int i=101; i<=203; i+=2) {
if (prime(i)==1){
sum+=i;
}
}
printf("%d \n",sum);
return 0;
}
关于c - 素数之和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47673717/