数値が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