在python中,如何检查数字n是否是基数b的精确幂?
注意:它需要推广到任何作为参数给定的基数。
下面是我得到的信息:
假设n和base都是大于0的整数。
import math
def is_power(n,base):
return math.log(n,base) == base**n
发布于 2013-03-12 03:20:00
一个非常简单的解决方案是这样的:
def ispower(n, base):
if n == base:
return True
if base == 1:
return False
temp = base
while (temp <= n):
if temp == n:
return True
temp *= base
return False
结果:
>>> ispower(32, 2)
True
>>> ispower(81, 3)
True
>>> ispower(625, 5)
True
>>> ispower(50, 5)
False
>>> ispower(32, 4)
False
>>> ispower(2,1)
False
>>> ispower(1,1)
True
发布于 2013-03-12 03:16:40
>>> def isPower(n, b):
... return b**int(math.log(n, b)+.5)==n
...
>>> isPower(128, 2)
True
>>> isPower(129, 2)
False
>>> isPower(3**10, 3)
True
>>> isPower(3**129, 3)
True
>>> isPower(10**500, 10)
True
>>> isPower(10**(10**6), 10)
True
编辑:此代码对于1,1
确实失败
>>> isPower(1,1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in isPower
ZeroDivisionError: float division by zero
我将把它留给操作员来决定他是要应用琐碎的修复还是重写他的需求。
发布于 2017-02-18 20:24:14
>>>(math.log(int(num),int(base))).is_integer()
这将返回布尔值true或false。这应该可以很好地工作。希望能有所帮助
https://stackoverflow.com/questions/15352593
复制