【思特奇杯·云上蓝桥-算法训练营】第1周:阶乘约数

阅读 24

2022-07-04

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()


精彩评论(0)

0 0 举报