解題思路:直接求出這個數然後求其末尾0的個數肯定是不可取的,即使是long型別,也很快會有溢位 現象。可以利用2*5=10,對任意數的階乘,5的因子個數肯定比2的因子個數要少,所以,可以認為,n的階乘尾數中有多少個0,取決於1-n這些數中5的因子有多少個。
以下是c語言的實現源**:
#include
int getdivisorcount(int dividend,int divisor);
void main(void)
printf("100!zero=%d",sum);
system("pause");}/*
*dividend:被除數,divisor除數,有上述原理分析這裡divisor的值為5
*這個方法求出1-n中每個數的5的因子個數
*/ int getdivisorcount(int dividend,int divisor)
int count = 0;
if(dividend%divisor == 0)
return count;}
求乙個數的階乘中0的個數
連續幾天產出為負,再不寫點東西沒法交代了。public class the number of 0 in factorialn 階乘中有多少0,如果n k 10 m k是乙個不能被10整除的數,那麼m有多少個就有多少個0 n!進行質因數分解n!2 x 3 y 5 z 由於只有2 5 10,所以可以看...
C 利用遞迴求乙個數的階乘 遞迴 階乘
當然也可以用迭代 就是迴圈 來求階乘,遞迴適用於選擇結構,迭代適用於迴圈結構。能用遞迴解決的問題,一定能用迭代來解決。c 利用遞迴求乙個數的階乘 遞迴 即自己呼叫自己 分類 分為直接呼叫和間接呼叫 直接呼叫 不通過其他函式直接在本函式內,呼叫自己。間接呼叫 通過多步操作,在其他函式內呼叫本身。inc...
統計乙個數的階乘後面0的個數
given an integer n,return the number of trailing zeroes in n note your solution should be in logarithmic time complexity.要求對數時間。首先分析,只有2 5 10才會產生乙個0,n...