0
点赞
收藏
分享

微信扫一扫

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

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 条评论