python - 输入 343 时完美整数求值失败

标签 python math

完美的幂是一个正整数,可以表示为另一个正整数的整数幂。

任务是检查给定的整数是否是完美的幂。

这是我的代码:

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/

相关文章:

python - Flask 中的 404 错误

python - Perl 中 $1 的 Python 等价物是什么,或者正则表达式中的任何其他特殊变量?

python - 使用查找方法(xml.etree.ElementTree)后获取父元素

python - 如何用scrapy或者beautiful soup提取特定html标签的内容?

python - 使用嵌套循环在 while 循环中显示特定值?

python - 在 python 中计算快速对数基数 2 上限

python - tensorflow : "trying to mutate a frozen object",巴泽尔

math - 是否有可能设计一个接受无理数的自动机?

python - 优化代码以找到可被 1-20 之间的所有整数整除的最小数字

c# - .NET “decimal” 算法是否独立于平台/体系结构?