求n!中含有某个因子个数的方法
生活随笔
收集整理的這篇文章主要介紹了
求n!中含有某个因子个数的方法
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
?求n的階乘某個因子a的個數(shù),如果n比較小,可以直接算出來,但是如果n很大,此時n!超出了數(shù)據(jù)的表示范圍,這種直接求的方法肯定行不通。其實n!可以表示成統(tǒng)一的方式。
n!=(k^m)*(m!)*a?? 其中k是該因子,m=n/k,a是不含因子k的數(shù)的乘積
下面推導這個公式
n!=n*(n-1)*(n-2)*......3*2*1
?? =(k*2k*3k.....*mk)*a????? a是不含因子k的數(shù)的乘積,顯然m=n/k;
?? =(k^m)*(1*2*3...*m)*a
?? =k^m*m!*a
接下來按照相同的方法可以求出m!中含有因子k的個數(shù)。
因此就可以求除n!中因子k的個數(shù)
int count(int n,int k) {int num=0;while(n){num+=n/k;n/=k;}return num; }總結(jié)
以上是生活随笔為你收集整理的求n!中含有某个因子个数的方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。