c - 素数之和

标签 c

我想计算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/

相关文章:

仅使用整数算法计算 C 中 N 个整数的平均值而不保留 N 个值

c - 声明 char* 不适用于 strcat()

c - 使用不同的根目录启动单独的进程,而无需 fork /克隆它

c - 在 C 语言中,检查分支语句的函数返回值的最佳实践是什么?

c - Shellcode 和格式字符串漏洞?

c - 实现链表的段错误

c - 为什么我的链表修改在此 C 代码中不起作用?

c - 当 i 已经用 0 和 if 条件初始化时,i 的值是多少?为什么?

c - 用 C 宏替换部分函数/变量名

c - 如何将结构体指向特定地址