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

数値がC++で素数階乗素であるかどうかを確認します


コンセプト

与えられた正の数nに関して、タスクはnが素数階乗素数であるかどうかを確認することです。 nが素数階乗素数の場合は「YES」を出力し、それ以外の場合は「NO」を出力する必要があります。

Primorial Prime-数学に関して、Primorial素数は、pN#+ 1またはpN#– 1の形式の素数として定義されます。ここで、pN#は、最初のN個の素数の積であるpNの素数です。

入力 − n =7

出力 −はい

7は、N=2の場合はpN+1の形式の素数階乗素数であり、素数階乗は2 * 3 =6、6 + 1=7です。

入力 − n =29

出力 −はい

29は、N =3の場合はpN-1の形式の素数階乗素数であり、素数階乗は2 * 3 * 5 =30、30-1=29です。

以下では、最初のいくつかの素数階乗素が表示されます-2、3、5、7、29、31、211、2309、2311、30029

アプローチ

  • エラトステネスのふるいを適用して、範囲内のすべての素数を生成する必要があります。

  • Nが素数であるかどうかを確認します。Nが素数でない場合は、No

    を出力します。
  • それ以外の場合は、最初の素数(つまり、2)から始めて、次の素数の乗算を開始し、積+ 1 =Nまたは積– 1=Nかどうかを確認し続けます

  • product + 1=Nまたはproduct-1=Nの場合、Nは素数階乗素です。それ以外の場合はそうではありません。

// CPP program to check Primorial Prime
#include <bits/stdc++.h>
using namespace std;
#define MAX 10000
vector<int> arr1;
bool prime1[MAX];
void SieveOfEratosthenes1(){
   memset(prime1, true, sizeof(prime1));
   for (int p = 2; p * p < MAX; p++) {
      if (prime1[p] == true) {
         for (int i = p * 2; i < MAX; i += p)
            prime1[i] = false;
      }
   }
   for (int p = 2; p < MAX; p++)
      if (prime1[p])
         arr1.push_back(p);
}
bool isPrimorialPrime1(long n){
   // If n is not prime Number
   // return flase
   if (!prime1[n])
      return false;
   long long product1 = 1;
   int i = 0;
   while (product1 < n) {
      product1 = product1 * arr1[i];
      if (product1 + 1 == n || product1 - 1 == n)
         return true;
      i++;
   }
   return false;
}
// Driver code
int main(){
   SieveOfEratosthenes1();
   long n = 29;
   // Check if n is Primorial Prime
   if (isPrimorialPrime1(n))
      cout << "YES\n";
   else
      cout << "NO\n";
   return 0;
}

出力

YES

  1. 数が素数であるかどうかをチェックするC#プログラム

    数値が素数であるかどうかを計算するために、forループを使用しました。その中で、すべての反復で、ifステートメントを使用して、数値自体の間の剰余が0に等しいことを確認します。 for (int i = 1; i <= n; i++) {    if (n % i == 0) {       a++;    } } カウンターaも追加されます。これは、数が素数の場合、つまり1と数自体の場合に2回だけ増加します。したがって、aの値が2の場合、その数は素数であることを意味します。 例 数が素数であるかどうかを確認するための

  2. Pythonで数値が素数階乗素であるかどうかを確認します

    数nがあるとすると、nが素数階乗素であるかどうかを確認する必要があります。数がpN#+ 1またはpN#– 1の形式の素数である場合、その数は素数であると言われます。ここで、pN#は、最初のN個の素数の積であるようなpNの素数を示します。 したがって、入力が29の場合、29はpN-1の形式の素数階乗素数であるため出力はTrueになります。N=3の場合、素数階乗は2 * 3 * 5 =30、30-1=29です。 これを解決するには、次の手順に従います- MAX:=100000 prime:=サイズMAXのリストとTrueで埋める arr:=新しいリスト 関数SieveOfEratos