Pythonで数値がアキレス数であるかどうかを確認します
数nがあるとします。 nがアキレス数であるかどうかを確認する必要があります。私たちが知っているように、数は強力な数の場合はアキレス数です(数Nは、その素因数pごとに、p ^ 2もそれを除算する場合、強力な数と呼ばれます)が、完全なべき数ではありません。アキレス数の例には、72、108、200、288、392、432、500、648、675、800、864、968、972、1125があります。
したがって、入力が108のような場合、6と36の両方がそれを分割し、完全な正方形ではないため、出力はTrueになります。
これを解決するには、次の手順に従います-
- 関数check_powerful()を定義します。これにはnがかかります
- n mod 2は同じですが、
- p:=0
- n mod 2は0と同じですが、
- n:=n / 2
- p:=p + 1
- pが1と同じ場合、
- Falseを返す
- p:=(nの平方根)+1の整数
- 3からpの範囲の係数の場合、2ずつ増やします。
- p:=0
- n mod factorは0と同じですが、do
- n:=n/ファクター
- p:=p + 1
- pが1と同じ場合、
- Falseを返す
- (nが1と同じ)の場合にtrueを返します
- 関数check_power()を定義します。これには かかります
- aが1と同じ場合、
- Trueを返す
- p:=(nの平方根)+1の整数
- 範囲2からaのiの場合、1ずつ増やします。
- val:=log(a)/ log(i)[すべてのベースe]
- if(val-(val)の整数部分)<0.00000001、then
- Trueを返す
- Falseを返す
- メインの方法から、次の手順を実行します-
- check_powerful(n)がTrueと同じで、check_power(n)がFalseと同じである場合、
- Trueを返す
- それ以外の場合、
- Falseを返す
例
理解を深めるために、次の実装を見てみましょう-
from math import sqrt, log def check_powerful(n): while (n % 2 == 0): p = 0 while (n % 2 == 0): n /= 2 p += 1 if (p == 1): return False p = int(sqrt(n)) + 1 for factor in range(3, p, 2): p = 0 while (n % factor == 0): n = n / factor p += 1 if (p == 1): return False return (n == 1) def check_power(a): if (a == 1): return True p = int(sqrt(a)) + 1 for i in range(2, a, 1): val = log(a) / log(i) if ((val - int(val)) < 0.00000001): return True return False def isAchilles(n): if (check_powerful(n) == True and check_power(n) == False): return True else: return False n = 108 print(isAchilles(n))
入力
108
出力
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)の範囲の任意の数で正確に割り切れるかどうかを確認します。指定された範囲内に何ら