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:=新しいリスト
- 関数SieveOfEratosthenes()を定義します。これには時間がかかります
- 範囲2からint((MAX)の平方根)+ 1のpriの場合、do
- prime [pri]がTrueと同じ場合、
- pri * 2からMAXの範囲のiの場合、各ステップでpriごとに更新します。
- prime [i]:=False
- pri * 2からMAXの範囲のiの場合、各ステップでpriごとに更新します。
- prime [pri]がTrueと同じ場合、
- 2からMAXの範囲のpriについては、
- prime [pri]がゼロ以外の場合、
- arrの最後にpriを挿入
- prime [pri]がゼロ以外の場合、
- メインの方法から、次の手順を実行します-
- prime [n]がゼロの場合、
- Falseを返す
- product:=1、i:=0
- 製品
- product:=product * arr [i]
- product + 1がnと同じであるか、product-1がnと同じである場合、
- Trueを返す
- i:=i + 1
例
理解を深めるために、次の実装を見てみましょう-
from math import sqrt MAX = 100000 prime = [True] * MAX arr = [] def SieveOfEratosthenes() : for pri in range(2, int(sqrt(MAX)) + 1) : if prime[pri] == True : for i in range(pri * 2 , MAX, pri) : prime[i] = False for pri in range(2, MAX) : if prime[pri] : arr.append(pri) def check_primorial_prime(n) : if not prime[n] : return False product, i = 1, 0 while product < n : product *= arr[i] if product + 1 == n or product - 1 == n : return True i += 1 return False SieveOfEratosthenes() n = 29 print(check_primorial_prime(n))
入力
29
出力
True
-
PythonでNが二面素数であるかどうかを確認します
数nがあるとします。 nが二面素数であるかどうかを確認する必要があります。数自体が素数であり、ディスプレイの向き(通常または上下逆)に関係なく、7セグメントディスプレイを使用して同じ数または他の素数が表示される場合、その数は二面素数であると言われます。 したがって、入力がn =1181のような場合、出力はTrueになります 2つ目は、1つ目の逆さまの形式で、どちらも素数です。 これを解決するには、次の手順に従います- 関数up_side_down()を定義します。これにはnがかかります temp:=n、total:=0 0の場合、do d:=temp mod 10
-
素数をチェックするPythonプログラム
この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −数が与えられているので、与えられた数が素数であるかどうかを確認する必要があります。 1より大きい特定の正の数で、1以外の要素はなく、その数自体は素数と呼ばれます。 2、3、5、7などは他の要素がないため素数です。 以下のこのプログラムでは、素数または非素数の性質について番号がチェックされます。 1以下の数は素数とは言えません。したがって、数値が1より大きい場合にのみ反復します。 ここで、その数が2から(num-1 // 2)の範囲の任意の数で正確に割り切れるかどうかを確認します。指定された範囲内に何ら