整数阶乘组合计算 求解!

给定正整数n、a,求最大的k,使n!可以被a^k整除但不能被a^(k+1)整除。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

n和a采用一次input()调用输入,两个数使用逗号(,)分隔,直接输出k值。


n, a = eval(input())
s = 1
for i in range(1, n + 1):
    s = s * i
for k in range(1, n):
    ak = a ** k
    aj = a ** (k + 1)
    if s % ak == 0 and s % aj != 0:
        print(k)
        break

img

import math

def fun(n, a):
    s = 1
    for i in range(1, n + 1):
        s *= i
    k =int(math.log(s ,a))
    while k >= 1:
        if s % a ** k == 0 and s % a ** (k + 1) != 0:
            return k
        k -= 1
n,a =eval(input(">>>"))
        
res = fun(n, a)
print(res)

【有帮助请采纳】

from math import factorial
n,a = eval(input());k = 0
while 1:
    if factorial(n)%a**k==0 and factorial(n)%a**(k+1)!=0:print(k);break
    k+=1

【有帮助请采纳】

比较挫,但能用

import math
n,a=input().split(',')
n=int(n)
a=int(a)
jc=1
for i in range(1,n+1):
    jc = jc*i
k=math.log(jc,a)
k = int(k)
while k>=0:
    t = math.pow(a,k)
    t1 = math.pow(a,k-1)
    if (jc%t1==0) and (jc%t!=0):
        print(k)
        break;
    k=k-1