在Python中检查数字是否为阿喀琉斯数字
假设我们有一个数字n;我们必须检查n是否是阿基里斯数。众所周知,当一个强大的数字(一个数字N被称为有功数字,当它的每个素数p都由p ^ 2除以它时,一个数字N称为有功数字)时,它就是一个完美的幂。阿喀琉斯数的一些示例是:72、108、200、288、392、432、500、648、675、800、864、968、972、1125。
因此,如果输入类似于108,则输出将为True,因为6和36都将其相除并且不是完美的平方。
为了解决这个问题,我们将遵循以下步骤-
定义一个函数check_powerful()。这将花费n
虽然n mod 2相同,但是
返回False
n:= n / 2
p:= p + 1
p:= 0
而n mod 2与0相同,则
如果p与1相同,则
p:=(n的平方根)的整数+ 1
对于3到p范围内的因子,增加2
返回False
n:= n /因子
p:= p + 1
p:= 0
当n mod因子等于0时,
如果p与1相同,则
当(n等于1)时返回true
定义一个函数check_power()。这将需要
如果a与1相同,则
返回True
p:=(n的平方根)的整数+ 1
对于范围2到a中的i,增加1
返回True
val:= log(a)/ log(i)[所有基本e]
如果(val-(val)的整数部分)<0.00000001,则
返回False
从主要方法中,执行以下操作-
如果check_powerful(n)与True相同,而check_power(n)与False相同,则
返回True
除此以外,
返回False
示例
让我们看下面的实现以更好地理解-
from math import sqrt, logdef 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中检查数字是否为阿喀琉斯数字 的全部内容, 来源链接: utcz.com/z/343419.html