【发布时间】:2017-01-09 22:25:31
【问题描述】:
例如,243 是 3 的完美幂,因为 243=3^5。
我以前一直在使用(math.log(a) / math.log(b)).is_integer(),我认为它工作得很好,但后来我用上面的例子试了一下,由于浮点运算,它实际上返回 4.999999999999999。所以它只对非常小的数字是可靠的,我发现不到 100 个。
我想我可以使用循环来进行重复乘法...即将 i 设置为 3,然后是 9,然后是 27,然后是 81,然后是 243,这等于目标,所以我们知道这是一个完美的幂。如果它达到大于 243 的点,那么我们知道它不是一个完美的力量。但是我在一个循环中运行这个检查,所以这看起来效率很低。
那么有没有其他方法可以可靠地检查一个数字是否是另一个数字的完美幂?
【问题讨论】:
-
关于 Y 在你的 XY 问题中:不要测试浮动是否相等,测试 closeness(如检查
math.log(a) / math.log(b)是否 close到它的整数部分) -
请注意,我发布的链接涵盖了您想要检测一个数字是否是 any 其他数字的非平凡完美幂的情况,例如你不知道 b.
-
您是否已经知道
b=3,或者您是否也想找到它?