如何找到pascal三角形的给定行号中可被给定行号和素数的素数整除的数的总数
我在python中使用以下代码

def factorial(x):
    result = 1
    for i in xrange(1,x+1):
        result *= i
    return result

def combination(n,r):
    return factorial(n)/(factorial(n-r)*factorial(r))

p = input()
cnt = 0
for i in range(0,n+1):
    if((combination(n,i)%p)==0):
        cnt += 1
print cnt

但是给定的代码对于大的数字来说需要很长时间。
你能给我推荐一个更好的算法吗。

最佳答案

Luca's theorem的一个推论是,不可被素数p整除的二项式系数C(n,k)的个数是
(a₁+1)⋅(a₂+1)⋅...⋅(a+1),其中ai是p元数字系统中n的第i位。
例子:
p=3,n=7dec=213
结果=(2+1)(1+1)=6
帕斯卡三角形的第7行是1 7 21 35 35 21 7 1,它包含6个不可被3整除的系数,其余两个可被3整除。

10-06 16:08