C++ 检查一个数是否可以表示为两个素数之和的程序

要理解本示例,您应该了解以下 C++ 编程 主题


该程序从用户那里获取一个正整数,并检查该数字是否可以表示为两个素数的和。

如果该数字可以表示为两个素数的和,则输出显示素数的组合。

为了完成此任务,创建了一个用户定义的函数来检查素数


示例:检查一个数是否可以表示为两个素数的和

#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 = 2i = n/2 迭代一个循环。在每次迭代中,我们检查 i 是否为素数。

如果 i 是素数,我们检查 n - i 是否为素数。

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

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

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

如果 flag 仍然为 false,那么我们知道 n 不能表示为两个素数的和,我们将在屏幕上打印该消息。


另请阅读

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战