该程序从用户那里获取一个正整数,并检查该数字是否可以表示为两个素数的和。
如果该数字可以表示为两个素数的和,则输出显示素数的组合。
为了完成此任务,创建了一个用户定义的函数来检查素数。
示例:检查一个数是否可以表示为两个素数的和
#include <iostream>
using namespace std;
bool check_prime(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 (check_prime(i)) {
if (check_prime(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 check_prime(int n) {
int i;
bool is_prime = true;
// 0 and 1 are not prime numbers
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;
}
输出
Enter a positive integer: 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 不能表示为两个素数的和,我们将在屏幕上打印该消息。
另请阅读