Python 求除N阶乘的A的最高阶

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

我一直在编写这段代码,以找到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

您的
范围
颠倒:

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的循环计算阶乘