n!代表n的阶乘
1、简单的对n!中的每个数字(共n个)计算其质因子p的个数
2、公式法:n!中质因子p的个数为=(n/p+n/p2+n/p3+…)
实现:
1、低阶版
int cal (int n;int p){
int ans=0;
for(int i=2;i<=n;i++){
int temp=i;
while(temp%p==0){
ans++;
temp/=p;
}
}
return ans;
}
2、中阶
int cal(int n,int p){
int cnt=0;
while(n){
cnt+=n/p;
n/=p;
}
return cnt;
}
3、递归版本
int cal(int n,int p){
if(n<p) return 0;
return n/p+cal(n/p,p);
}