问题描述
定义阶乘 n! = 1 × 2 × 3 × ··· × n。
请问 100! (100 的阶乘)有多少个约数。
答案提交
这是一道结果填空的题,你只需要算出结果后提交即可。
本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
答案:39001250856960000
题解
数学公式:阶乘数学定理
任意一个正整数 X 都可以表示成若干个质数乘积的形式,即
X = p1a1 * p2a2 * p3a3…… * pkak
约数个数 = (a1 + 1)(a2 + 1)……(ak + 1)
正确代码:
#include<iostream>
#include<stdio.h>
using namespace std;
int main(){
int k;
while(cin>>k){
long long p[k+5];
for(int i=1;i<k+5;i++){
p[i]=0;
}
for(int i=2;i<=k;i++){
int n=i;
for(int j=2;j<=n;j++){
while(n%j==0){
p[j]++;
n=n/j;
}
}
}
long long sum=1;
for(int i=2;i<=k;i++){
if(p[i]){
sum*=(p[i]+1);
}
}
cout<<sum<<endl;
}
return 0;
}