100 的階乘末尾有多少個0?

原創】100的階乘結果中末尾含有幾個數字0

【題目】今天在網上看到一道題目:100!結果數值中末尾有幾個0?

【分析】計算100!會溢出,所以使用將10分拆爲10 = 2X5,在1~100中,尋找2的個數N(比如,4有兩個2),以及5的個數M,結果 X = M > N ? N : M;

【圖表分析】   現在只分析5,

                         1,2,3,4,5,6,...,25, ...,100

除以5後爲:     0,0,0,0,1,0,...,5,...,20,此時有20個5

再對                 1,2,3,...,20進行同樣計算:

除以5後爲:    0,0,0,0,1,...,4,此時有4個

因爲4 < 5,所以最終結果20 + 4 = 24;

同樣驗證1000!爲:

1000/5 = 200

200/5 = 40

40/5 = 8

8/5 = 1

共計:200 + 40 + 8 + 1 = 249個0

同樣考慮2,要遠多於5的存在,

至此,完結

#include <stdio.h>


int getfn_1(const int n)
{
int counter=0;  //the counter!
int i;


for(i=4; i<=n; i++)
{
int flag;
flag=i;
while(flag>=5&&flag%5==0)
{
flag/=5;
counter++;
}
}


return counter;
}


int main(void)
{
///int ret;
int fact_n = 100;

printf("100!有%d個零\n",getfn_1(fact_n));

    return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章