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

C++のピアポント素数


この問題では、数nが与えられます。私たちの仕事は、すべてのピアポント素数を印刷することです。 n未満。

ピアポント素数 数は、次の形式の特別なタイプの素数です。

p =2 i 。 3 k +1。

ここで、pは素数、iとkは整数です。

問題を理解するために例を見てみましょう

入力 − n =50

出力 − 2、3、5、7、13、17、19、37

この問題を解決するには、条件に従うすべての素数を見つける必要があります。このために、2と3の累乗の数を持つ数を見つけます。そしてすべての素数を見つけます。そして、条件に続く素数である両方の数を印刷します。

ソリューションの実装を示すプログラム

#include <bits/stdc++.h>
using namespace std;
void printPierpontPrimes(int n){
   bool arr[n+1];
   memset(arr, false, sizeof arr);
   int two = 1, three = 1;
   while (two + 1 < n) {
      arr[two] = true;
      while (two * three + 1 < n) {
         arr[three] = true;
         arr[two * three] = true;
         three *= 3;
      }
      three = 1;
      two *= 2;
   }
   vector<int> primes;
   for (int i = 0; i < n; i++)
   if (arr[i])
      primes.push_back(i + 1);
   memset(arr, false, sizeof arr);
   for (int p = 2; p * p < n; p++) {
      if (arr[p] == false)
         for (int i = p * 2; i< n; i += p)
            arr[i] = true;
   }
   for (int i = 0; i < primes.size(); i++)
      if (!arr[primes[i]])
      cout<<primes[i]<<"\t";
}
int main(){
   int n = 50;
   cout<<"All Pierpont Prime Numbers less than "<<n<<" are :\n";
   printPierpontPrimes(n);
   return 0;
}

出力

All Pierpont Prime Numbers less than 50 are :
2    3    5    7    13    17    19    37

  1. C++の平衡素数

    平衡素数 numberは、前の素数と次の素数で同じ差がある素数です。つまり、最も近い次の素数と前の素数の平均です。 素数が平衡素数になるには、次の式に従う必要があります- P n =(P(n-1)+ P(n + 1))/ 2 ここで、nは、順序付けられた素数のセット内の素数pnのインデックスです。 素数の順序集合:2、3、5、7、11、13、…。 まず、平衡素数は5、53、157、173、… この問題では、数nが与えられ、n番目の平衡素数を見つける必要があります。 例を見てみましょう Input : n = 3 Output : 157 このため、素数を生成し、配列に

  2. 数値がC++でフルプライムであるかどうかを確認します

    ここでは、数値が完全素数であるかどうかを確認する方法を説明します。数が素数であり、そのすべての桁も素数である場合、その数は完全な素数であると言われます。数が37であるとすると、これは完全な素数です。しかし、9は素数ではないため、97は完全な素数ではありません。 効率的なアプローチの1つはそれです。まず、素数ではない数字が存在するかどうかを確認する必要があります。数字は0から9でなければなりません。その範囲では、2、3、5、および7が素数であり、その他は素数ではありません。すべてが素数の場合は、その数が素数であるかどうかを確認します。 例 #include <iostream> u