完美的幂是一个正整数,可以表示为另一个正整数的整数幂。
任务是检查给定的整数是否是完美的幂。
这是我的代码:
def isPP2(x):
c=[]
for z in range(2,int(x/2)+1):
if (x**(1./float(z)))*10%10==0:
c.append(int(x**(1./float(z)))), c.append(z)
if len(c)>=2:
return c[0:2]
else:
return None
它适用于所有数字,例如:
isPP2(81)
[9, 2]
isPP2(2187)
[3, 7]
但它不适用于 343
(73)。
最佳答案
因为 343**(1.0/float(3))
不是 7.0
,所以它是 6.99999999999999
。您正在尝试使用 float 学来解决整数问题。
关于python - 输入 343 时完美整数求值失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30679828/