Question
定义阶乘 n! = 1 × 2 × 3 × ··· × n。
请问 100! (100 的阶乘)有多少个约数。
Idea
任意一个正整数 X 都可以表示成若干个质数乘积的形式,即 X = p1α1 ∗ p2α2 …… ∗ pkαk 约数个数 = (a1 + 1)(a2 + 1)……(ak + 1)
Code
def FactorialDivisor():
p = [0 for i in range(101)]
for i in range(2,101):
n = i
j = 2
for j in range(2,int(n / j) + 1):
while n % j == 0:
p[j] += 1
n = int(n / j)
if n > 1:
p[n] += 1
ans = 1
for i in range(2, 101):
if p[i]:
ans *= (p[i] + 1)
print(ans)
FactorialDivisor()