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
变量 flag
为 false
。我们使用这个变量来确定输入的数字是否可以表示为两个质数之和。
然后我们从 i = 2
开始迭代一个循环直到 i = n/2
。在每次迭代中,我们检查 i
是否为质数。
如果 i
是质数,我们再检查 n - i
是否也是质数。
如果 n - i
也是质数,那么我们就知道 n
可以表示为两个质数 i
和 n - i
之和。
于是,我们在屏幕上打印结果,并将 flag
的值改为 true
。否则,flag
保持 false
。
这个过程一直持续到循环结束。
如果 flag
仍然是 false
,那么我们就知道 n
无法表示为两个质数之和,并在屏幕上打印这个信息。