C++で指定された範囲で最大の双子を見つけます
この問題では、lValueとhValueの2つの値が与えられます。私たちの仕事は、与えられた範囲で最大の双子を見つけることです 。
2つの数が両方とも素数であり、それらの差が2である場合、2つの数は双子の数であると言われます。
問題を理解するために例を見てみましょう
Input : lValue = 65, rValue = 100 Output : 71, 73
ソリューションアプローチ
この問題の簡単な解決策は、rValue-2からlValueにループし、iと(i + 2)の各ペアで双子をチェックし、最初に発生した双子を出力することです。
別のアプローチ 範囲内のすべての素数を見つけて、素数であるiと(i + 2)の最大のペアをチェックすることです
例
ソリューションの動作を説明するプログラム
#include <bits/stdc++.h> using namespace std; void findLargestTwins(int lValue, int uValue) { bool primes[uValue + 1]; memset(primes, true, sizeof(primes)); primes[0] = primes[1] = false; for (int p = 2; p <= floor(sqrt(uValue)) + 1; p++) { if (primes[p]) { for (int i = p * 2; i <= uValue; i += p) primes[i] = false; } } int i; for (i = uValue; i >= lValue; i--) { if (primes[i] && (i - 2 >= lValue && primes[i - 2] == true)) { break; } } if(i >= lValue ) cout<<"Largest twins in given range: ("<<(i-2)<<", "<<i<<")"; else cout<<"No Twins possible"; } int main(){ int lValue = 54; int uValue = 102; findLargestTwins(lValue, uValue); return 0; }
出力
Largest twins in given range: (71, 73)
-
C++で与えられた数Nの約数で最大の良い数を見つけます
この問題では、数Nが与えられます。私たちのタスクは、与えられた数Nの約数で最大の適切な数を見つけることです。 。 かなりの数2です。 問題を理解するために例を見てみましょう Input : N = 15 Output : 15 説明 − Divisors of 15 : 1, 3, 5, 15. ソリューションアプローチ この問題の簡単な解決策は、Nのすべての約数を見つけることです。そして、その数のすべての素数の約数の積として抽出される最大の良い数を見つけます。 例 ソリューションの動作を説明するプログラム #include <bits/stdc++.h> usin
-
特定の二分木で最大のBSTサブツリーを検索します-C++で1を設定します
この問題では、二分木BTが与えられます。私たちのタスクは、特定のバイナリツリーで最大のBSTサブツリーを見つけることです。 。 バイナリツリーは、データストレージの目的で使用される特別なデータ構造です。二分木には、各ノードが最大2つの子を持つことができるという特別な条件があります。 二分探索木(BST)は、すべてのノードが以下のプロパティに従うツリーです- 左側のサブツリーのキーの値は、その親(ルート)ノードのキーの値よりも小さくなっています。 右側のサブツリーのキーの値は、その親(ルート)ノードのキーの値以上です。 問題を理解するために例を見てみましょう 入力: