在 C++ 中添加质数的循环

loop for adding prime numbers in c++

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

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

我宁愿使用此功能。您应该添加 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;
}