C++ 程序检查一个数是否可以表示为两个质数之和

要理解此示例,您应该具备以下 C++ 编程 主题的知识:

该程序从用户那里获取一个正整数,并检查该数字是否可以表示为两个素数之和。

如果数字可以表示为两个素数之和,则输出显示素数的组合。

为了执行此任务,创建了一个用户定义的函数来检查素数

示例:检查一个数是否可 ​​ 以表示为两个质数之和

#include <iostream>
using namespace std;

bool checkPrime(int n);

int main() {
    int n, i;
    bool flag = false;

    cout << "Enter a positive  integer: ";
    cin >> n;

    for(i = 2; i <= n/2; ++i) {
        if (checkPrime(i)) {
            if (checkPrime(n - i)) {
                cout << n << " = " << i << " + " << n-i << endl;
                flag = true;
            }
        }
    }

    if (!flag)
      cout << n << " can't be expressed as sum of two prime numbers.";

    return 0;
}

// Check prime number
bool checkPrime(int n) {
    int i;
    bool isPrime = true;

    // 0 and 1 are not prime numbers
    if (n == 0 || n == 1) {
        isPrime = false;
    }
    else {
        for(i = 2; i <= n/2; ++i) {
            if(n % i == 0) {
                isPrime = false;
                break;
            }
        }
    }

    return isPrime;
}

输出

Enter a positive integer: 34
34 = 3 + 31
34 = 5 + 29
34 = 11 + 23
34 = 17 + 17

在这个程序中,我们使用 checkPrime() 函数来检查一个数是否为素数。

main() 中,我们从用户那里获取一个数字并将其存储在变量 n 中.

我们还初始化了一个 bool 变量 flag wei false 。我们用这个变量来判断输入的数是否可以表示为两个素数之和。

然后我们从 i = 2i = n/2 迭代一个循环。在每次迭代中,我们检查 i 是不是素数。

如果 i 是素数,我们检查是否 n-i 是素数还是不素数。

如果 n-i 也是素数,那么我们知道 n 可以表示为两个素数 in-i 的和.

因此,我们将结果打印在屏幕上并将改 flag 更改为 true 。否则, flag 仍然 false

这个过程一直持续到循环结束。

如果 flagfalse ,那么我们知道 n 不能表示为两个素数之和,我们在屏幕上打印该消息。