Python 求除N阶乘的A的最高阶
我一直在编写这段代码,以找到A除以N的最大指数!但它似乎不起作用。我已经到了可以找到不同因子的地步,但是我只得到了相同的返回空数组。我做错了什么Python 求除N阶乘的A的最高阶,python,Python,我一直在编写这段代码,以找到A除以N的最大指数!但它似乎不起作用。我已经到了可以找到不同因子的地步,但是我只得到了相同的返回空数组。我做错了什么 import math def highestPower(N,A): factors = [] x = math.factorial(N) for i in range(0,N,-1): if x % A**i == 0: factors += [i] return factors
import math
def highestPower(N,A):
factors = []
x = math.factorial(N)
for i in range(0,N,-1):
if x % A**i == 0:
factors += [i]
return factors
您的
范围
颠倒:
for i in range(0,N,-1):
应该是:
for i in range(N,0,-1):
此外,如果您只需要最高的,您可以立即返回:
import math
def highestPower(N,A):
x = math.factorial(N)
for i in range(0, N, -1):
if x % A**i == 0:
return i
范围应为
范围(N,0,-1):
范围内的文档说: 如果
步骤
为负,则最后一个元素是最小的开始+i*步骤
大于停止
因此,如果步骤为负,则需要执行
start
stop
。否则,for循环根本不会运行。避免计算求幂运算,去掉for
循环,尽可能长地除法即可
import math
def highestPower(N,A):
result = 0
x = math.factorial(N)
while x % A == 0:
x /= A
result += 1
return result
您还可以避免使用从1到N的循环计算阶乘