题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
定义阶乘 : n!=1×2×3×⋅⋅⋅×n。
请问 100! (100 的阶乘)有多少个正约数。
运行限制
最大运行时间:1s
最大运行内存: 128M
代码
"""
对于任意一个正整数N,可以分解为若干个质数乘积的形式,
即:N=(p1**r1)*(p2**r2)*...*(pn**rn),pn是素数
N的正约数集合:{(p1**b1)*...*(pn**bn)}, 0<=bn<=rn
N的正约数的个数:(r1+1)*(r2+1)*...*(rn+1)
对于 N!的正约数集合和个数,可以分别求出1-N的每一个数的(p1**r1)*...*(pn**rn),
然后将这些pn相乘。
对N质因数分解可以使用辗转相除法实现
"""
prim = [] # 用于存储1-N的每一个数质因数分解产生的质数
def divide(num):
"""对num分解质因数"""
i = 2
while(num>1):
if num % i == 0:
prim.append(i)
num //= i
else:
i+=1
for i in range(2,101):
divide(i)
pset = set(prim)
ans = 1
for i in pset:
ans *= (prim.count(i)+1)
print(ans)
""""39001250856960000"""