C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

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

  1. C++の最小ヒープの値x未満のすべてのノードを出力します

    この問題では、最小ヒープが与えられます および値x x未満のすべてのノードを印刷する必要があります。 最小ヒープ は、すべてのノードの値が子ノードのノード値よりも小さい特殊なタイプの二分木です。 問題を理解するために例を見てみましょう- X =45 出力- 2 4 7 10 17 22 33 34 ここで、この問題を解決するには、最小ヒープ全体のプレオーダートラバーサルを実行し、指定された値X未満の値のみを出力する必要があります。ノードの値がxより大きい場合、トラバースは行われません。そこの子ノードの値はxより大きくなります。最小ヒープのプレオーダートラバーサルを実行す

  2. ある数が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