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