我想计算101和203之间的偶数素数之和。但是我的代码的输出错误,输出为52。
谁能帮我获得正确的输出,在我的代码中,我认为偶数肯定不是素数,这就是我逃脱它们的原因。我想通过质数函数使用此方法解决它。我该怎么办?万分感谢
#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
块内。另外,您要将
1
添加到sum
。相反,您应该添加i
,因为您希望将质数之和作为结果:sum+=i;
仅当
prime()
循环为所有1
值检查条件while
而没有n%i == 0
值时,函数i
才应返回i
。因此,您需要将true
移到return 1
循环之外。另外,在
while
的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;
}