给定正整数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
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