跳到主要内容

C++ 编写检查一个数字是否能表示为两个质数之和的程序

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

这个程序从用户那里接收一个正整数,并检查这个数字是否可以表示为两个质数之和。

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

为了执行这个任务,创建了一个用户自定义函数来 检查质数

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

#include <iostream>
using namespace std;

bool check_prime(int n);

int main() {

int n, i;
bool flag = false;

cout << "请输入一个正整数: ";
cin >> n;

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

if (!flag)
cout << n << " 无法表示为两个质数之和。";

return 0;
}

// 检查质数
bool check_prime(int n) {
int i;
bool is_prime = true;

// 0 和 1 不是质数
if (n == 0 || n == 1) {
is_prime = false;
}

for(i = 2; i <= n/2; ++i) {
if(n % i == 0) {
is_prime = false;
break;
}
}

return is_prime;
}

输出

请输入一个正整数: 34
34 = 3 + 31
34 = 5 + 29
34 = 11 + 23
34 = 17 + 17

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

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

我们还初始化了一个 bool 变量 flagfalse。我们使用这个变量来确定输入的数字是否可以表示为两个质数之和。

然后我们从 i = 2 开始迭代一个循环直到 i = n/2。在每次迭代中,我们检查 i 是否为质数。

如果 i 是质数,我们再检查 n - i 是否也是质数。

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

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

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

如果 flag 仍然是 false,那么我们就知道 n 无法表示为两个质数之和,并在屏幕上打印这个信息。