在 C++ 中将奇数表示为质数之和

在这个问题中,我们给出了一个奇数 N。我们的任务是将一个奇数表示为质数之和。

表示数时最多可以有三个素数。

让我们举个例子来理解这个问题,

输入:  N = 55

输出:  53 + 2

解决方法: 

奇数可以表示为素数之和。考虑到这些素数,我们有三种情况。

情况 1: 如果 n 是素数,则表示为一个素数n 的和。
情况 2: 如果 (n - 2) 是素数,则表示为两个素数  n-2 和 2 之和。

情况 3:  ( n - 3 ) 是一个偶数,可以使用哥德巴赫猜想方法表示为两个素数之和,其中我们将检查数 A 是否为素数,数 {(n-3) - A } 是否为也总理然后打印它。

程序来说明我们的解决方案的工作,

示例

#include <iostream>

using namespace std;

bool isPrime(int x)

{

   if (x == 0 || x == 1)

      return false;

   for (int i = 2; i * i <= x; ++i)

      if (x % i == 0)

         return false;  

   return true;

}

void primeAsSumofPrime(int n) {

   

   if (isPrime(n) )

      cout<<n;

   else if (isPrime(n - 2))

      cout<<"2 "<<"+ "<<(n - 2);

   else{

      cout<<"3 "<<"+ ";

      n -= 3;

      for (int i = 0; i < n; i++) {

         if (isPrime(i) && isPrime(n - i)) {

            cout<<i<<" + "<<(n - i);

            break;

         }

      }

   }

}

int main() {

   

   int n = 561;

   cout<<"号码 "<<n<<" expressed as sum of primes is ";

   primeAsSumofPrime(n);

   return 0;

}

输出 -

号码 561 expressed as sum of primes is 3 + 11 + 547

以上是 在 C++ 中将奇数表示为质数之和 的全部内容, 来源链接: utcz.com/z/349188.html

回到顶部