阶乘约数题目描述:
方法:
任意一个正整数 X 都可以表示成若干个质数乘积的形式,即 X = p1α1 ∗ p2α2∗…* pkαk
约数个数=(a1 + 1)(a2 + 1)……(ak + 1)
代码:
// 答案39001250856960000
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N = 1e4;
int p[100];
int main(){
int n=100;
// 对阶乘数进行质数分解
for(int k=2;k<=100;k++){
int tmp = k;
for(int i=2;i<tmp;i++){
while(i!=tmp){
if(tmp%i==0){
tmp/=i;
p[i]++;
}
else break;
}
}
p[tmp]++;
}
// 汇总计算
long long ans=1;
for(int i=2;i<=100;i++)
if(p[i]) ans*=(1+p[i]);
cout<<ans<<endl;
return 0;
}