例如,243是3的一个完全幂,因为243=3^5。
我之前一直使用(math.log(a) / math.log(b)).is_integer(),我认为它工作得很好,但是当我尝试上面的例子时,由于浮点数运算,它实际上返回了4.999999999999999。所以我发现只有在非常小的数字(小于100左右)才可靠。
我想我可以使用循环来进行重复的乘法...即将i设置为3,然后9,27,81,243,等于目标,所以我们知道它是完全幂。如果它超过了243,那么我们就知道它不是一个完全的幂。但是我已经在循环中运行了这个检查,所以这似乎非常低效。
那么,除此之外,是否还有其他可靠的方法来检查一个数字是否是另一个数字的完全幂呢?
我之前一直使用(math.log(a) / math.log(b)).is_integer(),我认为它工作得很好,但是当我尝试上面的例子时,由于浮点数运算,它实际上返回了4.999999999999999。所以我发现只有在非常小的数字(小于100左右)才可靠。
我想我可以使用循环来进行重复的乘法...即将i设置为3,然后9,27,81,243,等于目标,所以我们知道它是完全幂。如果它超过了243,那么我们就知道它不是一个完全的幂。但是我已经在循环中运行了这个检查,所以这似乎非常低效。
那么,除此之外,是否还有其他可靠的方法来检查一个数字是否是另一个数字的完全幂呢?
math.log(a) / math.log(b)
是否接近其整数部分)。 - Andras Deak -- Слава Україніb=3
了吗,还是也在尝试寻找它? - Teepeemm