【问题标题】:loop for adding prime numbers in c++在c ++中添加素数的循环
【发布时间】:2018-11-12 14:17:03
【问题描述】:

这是一个应该只添加素数并忽略非素数但它不能正常工作的循环,我的技能非常基础,所以请尽量简化你的答案,

#include <iostream>

using namespace std;

int main()
{
    int n = 0, a = 0, sum = 0;

    cin >> n;

    for (int j = 1; j <= n; j++)
    {
        cin >> a;
        if (a == 1)
        {
            continue;
        }
        if (a == 2 || a == 3)
        {
            sum += a;
        }
        if (a % 2 == 0)
        {
            continue;
        }

        for (int i = 3; i < a; i++)
        {
            if (a % i != 0)
            {
                sum += a;
            }
            else
            {
                continue;
            }
        }
    }
    cout << sum;

    return 0;
}

【问题讨论】:

  • 看不懂a的作用。我想应该是j而不是。此外,测试“是否是素数”应该在for (int i = ...) 循环结束时终止,而不是在循环内部。更好:实现和使用函数bool isprime (int a) {...}
  • 您是否尝试调试过您的代码?如果你没有,请做。

标签: c++ add


【解决方案1】:

我更喜欢使用此功能。您应该添加cmath 库:

bool isPrime(int number) {
    if (number <= 1)
        return false;

    for (int i = 2; i <= sqrt(number); i++)
    {
        if (number % i == 0)
        {
            return false;
        }
    }
    return true;
}

但是如果你想继续你的代码,在检查a == 2 || a == 3之后你应该continue。在 for 循环之前的最后一部分,您应该定义一些布尔值,例如 bool isPrime = true。然后,如果它找到一个分隔符,你应该将它分配给 falsebreak

你的完整代码应该是这样的:

#include <iostream>

using namespace std;

int main()
{
    int n = 0, a = 0, sum = 0;

    cin >> n;

    for (int j = 1; j <= n; j++)
    {
        cin >> a;
        if (a == 1)
        {
            continue;
        }
        if (a == 2 || a == 3)
        {
            sum += a;
            continue;
        }
        if (a % 2 == 0)
        {
            continue;
        }

        bool isPrime = true;
        for (int i = 3; i < a; i++)
        {
            if (a % i == 0)
            {
                isPrime = false;
                break;
            }
        }
        if (isPrime) {
            sum += a;
        }
    }
    cout << sum;
    return 0;
}

【讨论】:

  • 'a' 的作用是什么? Prime 测试应该简单地在“j”上。
  • 我认为 'n' 是要测试的整数个数,而 'a' 是如果素数要加到 sum 中的整数。
  • 根据问题,目标似乎是对素数求和。这里有歧义。 Sarah Ali 可以澄清一下。
猜你喜欢
  • 2019-09-14
  • 2020-03-20
  • 1970-01-01
  • 1970-01-01
  • 2021-01-24
  • 2014-08-03
  • 1970-01-01
  • 2018-06-03
  • 2019-12-31
相关资源
最近更新 更多