-
题目描述:
-
给定n,a求最大的k,使n!可以被a^k整除但不能被a^(k+1)整除。
-
输入:
-
两个整数n(2<=n<=1000),a(2<=a<=1000)
-
输出:
-
一个整数.
-
样例输入:
-
6 10
-
样例输出:
-
1
#include<stdio.h>
int main(){
int i,n,a,tmp,k;
while(~scanf("%d%d",&n,&a)){//输入n和a
tmp=1;
for(i=1;i<=n;i++){
tmp*=i;//for循环求阶乘
while(tmp%a==0){//如果能够整除a
++k;//就进行累加
tmp/=a;//并对
}
tmp %=a;
}
printf("%d\n",k);
}
return 0;
}
解题思路: (a,b)的最大公约数跟(b,a%b)的公约数相同