C++でそれより少ない数のすべての四つ子素数を印刷します
この問題では、正の整数Nが与えられ、n以下のすべてのプライム4つ組を出力する必要があります。
四つ子素数 {p、p +2 として計算される4つの素数のセットです。 、p +6 、p +8 }。 例 − 5 7 11 13.
問題を理解するために例を見てみましょう-
Input: N = 15 Output: 5 7 11 13.
この問題を解決するための簡単なアプローチは、素数pのすべての4つ組を生成し、すべてのp、p +2 かどうかを確認することです。 、p +6 、p +8 素数です。このソリューションは簡単ですが、コンパイラにとってはより複雑です。
もう1つの効率的なアプローチは、すべての素数を(エラトステネスのふるいを使用して)作成し、それらを特定の範囲までの配列に格納することです。配列をトラバースして、 p、p +2 を確認します 、p +6 、p +8 素数であるかどうかにかかわらず、すべてが素数である場合は印刷します。
例
#include <bits/stdc++.h> using namespace std; #define MAX 100000 bool prime[MAX]; void primeNumberGenerator() { memset(prime, true, sizeof(prime)); for (int p = 2; p * p < MAX; p++) { if (prime[p] == true) { for (int i = p * 2; i < MAX; i += p) prime[i] = false; } } } void printPrimeQuadruplet(int n) { for (int i = 0; i < n - 7; i++) { if (prime[i] && prime[i + 2] && prime[i + 6] && prime[i + 8]) { cout<<i<<" "<<i+2<<" "<<i+6<<" "<<i+8<<endl; } } } int main() { primeNumberGenerator(); int n = 42; cout<<"All prime Quadruplets are :\n"; printPrimeQuadruplet(20); return 0; }
出力
すべての四つ子素数は-
です5 7 11 13 11 13 17 19
-
C++の最小ヒープの値x未満のすべてのノードを出力します
この問題では、最小ヒープが与えられます および値x x未満のすべてのノードを印刷する必要があります。 最小ヒープ は、すべてのノードの値が子ノードのノード値よりも小さい特殊なタイプの二分木です。 問題を理解するために例を見てみましょう- X =45 出力- 2 4 7 10 17 22 33 34 ここで、この問題を解決するには、最小ヒープ全体のプレオーダートラバーサルを実行し、指定された値X未満の値のみを出力する必要があります。ノードの値がxより大きい場合、トラバースは行われません。そこの子ノードの値はxより大きくなります。最小ヒープのプレオーダートラバーサルを実行す
-
ある数がC++の別の数のすべての素数除数で割り切れるかどうかを確認します
2つの数字があるとします。数がすべての素因数で割り切れるか、2番目の数で割り切れるかどうかを確認する必要があります。数が120であると仮定します。素因数は{2、3、5}、別の数は75、ここでは素因数は{3、5}です。 120も3と5で割り切れるので、決定は「はい」です。 1の場合、GCDには素数除数が含まれます。これはxも除算します(xを最初の数として)。 2番目の数y/GCDがそのような一意の素数除数を持っている場合、すべての一意の素数除数がある場合。再帰を使用してペア(x、y / GCD)の一意性を見つける必要があります。 例 #include <iostream> #incl