📅  最后修改于: 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 = 2
到i = n/2
的循环。在每次迭代中,我们检查i
是否为质数。
如果i
是素数,我们检查n - i
是否是素数。
如果n - i
也是素数,那么我们知道n
可以表示为两个素数i
和n - i
的总和。
因此,我们将结果打印在屏幕上,并将flag
的值更改为true
。否则, flag
保持为false
。
这个过程一直持续到循环结束为止。
如果flag
仍然为false
,那么我们知道n
不能表示为两个素数之和,然后在屏幕上打印该消息。