📌  相关文章
📜  用于检查数字是否可以表示为两个质数之和的C++程序

📅  最后修改于: 2020-09-25 06:39:41             🧑  作者: Mango

使用函数检查整数(由用户输入)是否可以表示为所有可能组合的两个质数之和的示例。

该程序从用户处获取一个正整数,并检查该数字是否可以表示为两个质数的总和。

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

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

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

#include 
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初始化为false 。我们使用此变量来确定输入数字是否可以表示为两个质数之和。

然后,我们迭代从i = 2i = n/2的循环。在每次迭代中,我们检查i是否为质数。

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

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

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

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

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