C++で数値がプロス数であるかどうかをチェックするプログラム
数値「n」を指定すると、指定された正の整数がプロスであるかどうかを判断し、結果を出力として表示することがタスクになります。
プロス数とは何ですか?
プロス数は
によって与えられます$$ N =k \ cdot \:2 ^ {n} + 1 $$
ここで、nは正の整数、kは奇数の正の整数です
最初のいくつかのproth番号を以下に示します-
3, 5, 9, 13, 17, 25, 33, 41, 49, 57, 65, 81, 97.......
入力
number: 17
出力
its a proth number
入力
number: 18
出力
its not a proth number
特定のプログラムで使用されているアプローチは次のとおりです
-
状態を確認する番号を入力してください
-
与えられた式を適用して、そのプロス数かどうかを確認します
-
条件が真の場合は、プロス数を印刷します
-
条件が当てはまらない場合は、プロス数ではないことを印刷してください
アルゴリズム
Step 1→ declare function to calculate power of 2 bool isPower(int num) return (num && !(num & (num - 1))) Step 2→ Declare function to check if a number is a proth number or not bool isProth(int num) declare int k = 1 While (k < (num / k)) IF (num % k == 0) IF (isPower(num / k)) return true End Set k = k + 2 End End return false Step 3→ In main() Declare int num = 17 IF (isProth(num - 1)) Print "its a proth number" End Else Print "its not a proth number" End
例
#include <bits/stdc++.h> using namespace std; //function to calculate power of 2 bool isPower(int num){ return (num && !(num & (num - 1))); } //function to check if a number is a proth number bool isProth(int num){ int k = 1; while (k < (num / k)){ if (num % k == 0){ if (isPower(num / k)) return true; } k = k + 2; } return false; } int main(){ int num = 17; if (isProth(num - 1)) cout << "its a proth number"; else cout << "its not a proth number"; return 0; }
出力
上記のコードを実行すると、次の出力が生成されます-
its a proth number
-
C++でツリーの高さがバランスされているかどうかを確認するプログラム
二分木があるとしましょう。高さがバランスしているかどうかを確認する必要があります。高さのバランスが取れたツリーの場合、ツリー内のすべてのノードについて、左側のサブツリーの高さと右側のサブツリーの高さの絶対差は0または1であることがわかっています。 したがって、入力が次のような場合 その場合、出力はTrueになります これを解決するには、次の手順に従います- 関数dfs()を定義します。これはノードを取ります ノードがnullの場合、- 0を返す l:=1 + dfs(ノードの左側) r:=1 + dfs(ノードの右側) 1、次に- re
-
グラフが強く接続されているかどうかをチェックするC++プログラム
有向グラフでは、1つのコンポーネントの頂点の各ペアの間にパスがある場合、コンポーネントは強く接続されていると言われます。 このアルゴリズムを解決するには、まず、DFSアルゴリズムを使用して各頂点の終了時間を取得し、次に転置されたグラフの終了時間を検索します。次に、頂点をトポロジカルソートの降順で並べ替えます。 入力 :グラフの隣接行列。 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 出力 :以下は、与え