找到划分N阶乘的最高A度

时间:2016-03-29 22:11:22

标签: python

我一直在研究这段代码,找到分为N的A的最大指数!但它似乎没有起作用。我已经找到了可以找到不同因素的点,但我只是返回了相同的空数组。我做错了什么?

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

3 个答案:

答案 0 :(得分:1)

避免计算取幂,摆脱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的循环计算阶乘。

答案 1 :(得分:0)

您的range已被撤消:

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

答案 2 :(得分:0)

范围应为range(N,0,-1):
范围的文档说:

  

如果step为负数,则最后一个元素是最小start + i * step大于stop

所以,你需要start> stop如果您的步骤是否定的。否则,for循环根本不会运行。