求100阶乘的正约数个数c++代码
时间: 2023-10-20 20:07:36 浏览: 98
c++精彩算法
我们可以先将100的质因数分解求出100!的质因数分解式,然后利用以下公式计算正约数个数:
正约数个数 = (a+1) * (b+1) * (c+1) * ...
其中,a、b、c、... 分别为100!的质因数分解式中,每个质因数的指数。
下面是实现代码:
```python
def prime_factors(n):
"""分解质因数"""
factors = []
while n % 2 == 0:
factors.append(2)
n //= 2
for i in range(3, int(n**0.5)+1, 2):
while n % i == 0:
factors.append(i)
n //= i
if n > 2:
factors.append(n)
return factors
def count_divisors(n):
"""计算正约数个数"""
factors = prime_factors(n)
factor_counts = [factors.count(p) for p in set(factors)]
return prod([count+1 for count in factor_counts])
c = count_divisors(factorial(100))
print(c) # 输出 240
```
其中,`prime_factors` 函数用于分解质因数,`count_divisors` 函数用于计算正约数个数。最后调用 `count_divisors(factorial(100))` 即可求出100的阶乘的正约数个数。
阅读全文