C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++で素数の合計として奇数を表現する


この問題では、奇数Nが与えられます。私たちのタスクは、素数の合計として奇数を表現することです。

数を表現している間、最大3つの素数が存在する可能性があります。

問題を理解するために例を見てみましょう

入力: N =55

出力: 53 + 2

ソリューションアプローチ:

奇数は素数の合計として表すことができます。これらの素数を考慮に入れると、3つのケースがあります。

ケース1: nが素数の場合、1つの素数の合計として表されます n
ケース2: (n-2)が素数の場合、2つの素数n-2と2の合計として表されます。 。

ケース3: (n-3)は偶数であり、ゴールドバッハの予想法を使用して2つの素数の合計として表すことができます。この方法では、数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<<"The number "<<n<<" expressed as sum of primes is ";
   primeAsSumofPrime(n);
   return 0;
}

出力-

The number 561 expressed as sum of primes is 3 + 11 + 547

  1. C++でのデュードニー番号

    与えられた数の底の数理論で定義された数は、最初の自然数の桁の合計が2番目の数の桁の合計に等しくなるように、別の自然数の完全な3乗に等しい自然数です。 (ウィキペディア)。 番号はヘンリー・デュードニーによって発見されました 。その数式 は- ここでは、整数nが与えられます。私たちの仕事は、与えられた番号nが人物番号であるかどうかを確認することです。 問題を理解するために例を見てみましょう 入力: N =17592 出力: いいえ 説明: 与えられた番号はダドニー番号ではありません。 ソリューションアプローチ- 解決策は、デュードニー番号の基本的な定義にあります。

  2. 数値がC++で2つの三角数の合計として表現できるかどうかを確認します

    このセクションでは、1つの数を2つの三角数の合計として表現できるかどうかを確認します。三角数は以下のようになります- 例から、1、3、6、10はいくつかの三角数であることがわかります。数N(たとえば16)を2つの三角数(6、10)の合計として表す必要があります。 アプローチは非常に簡単です。 N未満のすべての三角数を取得する必要があります。これらの値からセットを作成します。ここで、集合からXと言う数を取り、N – Xが集合に存在するかどうかを確認する必要があります。そうすると、Xは2つの三角数の合計として表すことができます。 例 #include <iostream> #