我一直在研究这段代码,找到分为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
答案 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循环根本不会运行。