C++の範囲で非推移的な互いに素なトリプレットを見つける
下限と上限があり、ペア(x、y)が互いに素(GCDは1)、ペア(y、z)が互いに素であるような非遷移トリプレット(x、y、z)を見つける必要があるとします。 、ただし、ペア(x、z)は互いに素のペアではありません。たとえば、下限が2で、上限が10の場合、要素は{2、3、4、5、6、7、8、9、10}です。ここで可能なトリプレットは(4、7、8 )、ここでは(4、7)、および(7、8)は互いに素ですが、(4、8)は互いに素のペアではありません。
これを解決するために、ナイーブなアプローチに従います。範囲の下限と上限で可能なすべてのトリプレットを生成し、基準に一致させます。
例
#include <iostream> #include <algorithm> using namespace std; bool isCoprime(int a, int b){ return (__gcd(a, b) == 1); } void tripletInRange(int left, int right) { bool flag = false; int A, B, C; // Generate and check for all possible triplets // between L and R for (int a = left; a <= right; a++) { for (int b = a + 1; b <= right; b++) { for (int c = b + 1; c <= right; c++) { if (isCoprime(a, b) && isCoprime(b, c) && ! isCoprime(a, c)) { flag = true; A = a; B = b; C = c; break; } } } } if (flag == true) { cout << "(" << A << ", " << B << ", " << C << ")" << " is one such possible triplet between " << left << " and " << right << endl; } else { cout << "No Such Triplet exists between " << left << " and " << right << endl; } } int main() { int left = 2, right = 10; tripletInRange(left, right); }
出力
(8, 9, 10) is one such possible triplet between 2 and 10
-
C++のプライムトリプレット
この問題では、数Nが与えられます。私たちのタスクは、N未満のすべての素数三つ子素数を印刷することです。 三つ子素数 3つの素数のセットです。これは、(p、p + 2、p + 6)または(p、p + 4、p + 6)の形式です。直接パターンの3つおきの素数は6の倍数であるため、すべての素数は上記のトリプレットに従ってグループ化されます。 問題を理解するための例を見てみましょう Input: N = 13 Output: 5 7 11 この問題を解決するには、N以下のすべての素数を見つける必要があります。そしてトリプレットをチェックします。 ソリューションの実装を示すコード 例 #incl
-
C++の範囲のセットビットをコピーします
このチュートリアルでは、指定された範囲内のある数値のセットビットを別の数値にコピーするプログラムについて説明します。 このために、2つの整数が提供されます。私たちのタスクは、最初の数値のビットを確認し、それらが指定された範囲内にある場合は、それらのビットを2番目の数値にも設定することです。最後に、生成された数字を返します。 例 #include <bits/stdc++.h> using namespace std; //copying set bits from y to x void copySetBits(unsigned &x, unsigned y, unsig