我想计算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循环之外。

另外,在whilewhile循环中,这是不正确的:

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

08-16 00:19