该程序从用户那里获取一个正整数,并检查该数字是否可以表示为两个素数之和。
如果数字可以表示为两个质数之和,则输出显示质数的组合。
为了执行此任务,创建了一个用户定义的函数来检查素数 .
示例: 检查一个数是否可以表示为两个质数之和
#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 初始化为
false
。我们用这个变量来判断输入的数是否可以表示为两个素数之和。
然后我们迭代一个从
i = 2
到
i = n/2
的循环。在每次迭代中,我们检查
i 是否为素数。
如果
i 是素数,我们检查
n-i 是否是素数。
如果
n-i 也是素数,那么我们知道
n 可以表示为两个素数
i 和
n-i.
因此,我们将结果打印在屏幕上并将
flag 的值更改为
true
。否则,
flag 仍然是
false
。
这个过程一直持续到循环结束。
如果
flag仍然是
false
,那么我们知道
n不能表示为两个素数之和,我们打印屏幕上的那条消息。