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

C++で可能な素数の最大数の合計として数値を表す


数Nが与えられ、この数を最大素数の合計に分割する必要がある問題について話し合います。たとえば、

Input: N = 7
Output: 2 2 3
Explanation: 7 can be represented as the sum of two 2’s and a 3 which are the maximum possible prime numbers.

Input : N = 17
Output: 2 2 2 2 2 2 2 3

解決策を見つけるためのアプローチ

素数で数を表すために、Nで素数を引き、素数の差をチェックすることができます。差が素数の場合、Nを2つの素数の加算として表すことができます。

ただし、ここでは、最大数の素数を見つける必要があります。そのためには、最小の素数、つまり2と3を使用する必要があります。2と3の合計で任意の数を形成できます。

  • 偶数の数を確認してください。偶数の場合、(N / 2)2の合計で形成できます。

  • 奇数の場合は、1つの3と[(N-3)/2]2で形成できます。

  • このようにして、Nを素数の最大数の合計で表すことができます。

#include <bits/stdc++.h>
using namespace std;
int main(){
   int N = 7;
   // checking if N is odd,
   // If yes, then print 3
   // and subtract 3 from N.
   if (N & 1 == 1) {
      cout << "3 +";
      N -= 3;
   }
   // // keep subtracting and printing 2
   // until N is becomes 0.
   while (N!=2) {
      cout << " 2 +";
      N -= 2;
   }
   cout << " 2";
   return 0;
}

出力

3 + 2 + 2

結論

このチュートリアルでは、素数の最大数の合計として数を表すことについて説明しました。数値を2と3の合計として表すことにより、この問題を解決するための簡単なアプローチについて説明しました。また、C、Java、Pythonなどのプログラミング言語で実行できるこの問題のC++プログラムについても説明しました。このチュートリアルがお役に立てば幸いです。


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

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

  2. 数値が2つの素数の合計として表現できるかどうかをチェックするC++プログラム

    以下は、数値が2つの素数の合計として表現できるかどうかを確認する例です。 例 #include <iostream> using namespace std; int func(int num) {    int i;    int flag = 1;    for(i = 2; i <= num/2; ++i) {       if(num % i == 0) {          flag = 0;     &nb