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
-
C++でのデュードニー番号
与えられた数の底の数理論で定義された数は、最初の自然数の桁の合計が2番目の数の桁の合計に等しくなるように、別の自然数の完全な3乗に等しい自然数です。 (ウィキペディア)。 番号はヘンリー・デュードニーによって発見されました 。その数式 は- ここでは、整数nが与えられます。私たちの仕事は、与えられた番号nが人物番号であるかどうかを確認することです。 問題を理解するために例を見てみましょう 入力: N =17592 出力: いいえ 説明: 与えられた番号はダドニー番号ではありません。 ソリューションアプローチ- 解決策は、デュードニー番号の基本的な定義にあります。
-
数値がC++で2つの三角数の合計として表現できるかどうかを確認します
このセクションでは、1つの数を2つの三角数の合計として表現できるかどうかを確認します。三角数は以下のようになります- 例から、1、3、6、10はいくつかの三角数であることがわかります。数N(たとえば16)を2つの三角数(6、10)の合計として表す必要があります。 アプローチは非常に簡単です。 N未満のすべての三角数を取得する必要があります。これらの値からセットを作成します。ここで、集合からXと言う数を取り、N – Xが集合に存在するかどうかを確認する必要があります。そうすると、Xは2つの三角数の合計として表すことができます。 例 #include <iostream> #