【问题描述】
定义阶乘 n! = 1 × 2 × 3 × · · · × n。
请问 100! (100 的阶乘)有多少个约数。
思路:约数个数定理。
就是把质因子都搞出来,对于质因子ai,有cnt个,那么他的选择方案有(cnt+1)种,根据乘法原理。累乘即可。
//39001250856960000
#include<bits/stdc++.h>
using namespace std;
const int N=10500;
const int Q=5000;
int mp[N][N];
int dx[]={1,0,-1,0};
int dy[]={0,1,0,-1};
struct node{
int x,y;
int t;
};
int a[N];
int main(){
for(int i=2;i<=100;i++){
int x=i;
for(int j=2;j*j<=x;j++){
if(x%j==0){
int cnt=0;
while(x%j==0) ++cnt,x/=j;
a[j]+=cnt;
}
}
if(x!=1) a[x]++;
}
unsigned long long ans=1;
for(int i=1;i<=100;i++){
if(a[i]){
cout<<i<<" "<<a[i]<<endl;
ans=ans*(a[i]+1);
}
}
// cout<<(long long )39001250856960000<<endl;
cout<<ans<<endl;
return 0;
}
本文通过约数定理探讨了如何计算100的阶乘(100!)的约数数目,介绍了使用编程的方法,包括分解质因数和应用乘法原理。关键步骤包括找到100以内所有质因数及其出现次数,然后计算可能的组合总数。
993

被折叠的 条评论
为什么被折叠?



