給定乙個整數N,那麼N的階乘N!末尾有多少個0呢?

2021-08-04 03:27:46 字數 499 閱讀 7245

題目詳情:給定乙個整數n,那麼n的階乘n!末尾有多少個0呢?例如:n=10,n!=3 628 800,n!的末尾有兩個0。

題目分析:看到題第一想法是將n的階乘求出來然後取計算,但是再一想又會出現資料溢位的問題。

所以就想到了另外一種辦法。

因為:n! = 1*2*3*4*5*...........*n

所以我們可以採用分解質因數來解決,則可得:

n!=2^x*3^y*5^z.......

而我們則很明顯的發現,2*5會出現乙個0,所以我們得找到min(x,z),但是我們都知道被2整除的數肯定比5多,所以我們 就可以將該問題轉換為求z;這樣這個問題就變得簡單許多。因此,直接上**。

int countfactorialzero(int num) //- 給定乙個整數n,那麼n的階乘n!末尾有多少個0呢?例如:n=10,n!=3 628 800,n!的末尾有兩個0。

} return count;

}

給定乙個整數N,那麼N的階乘N!末尾有多少個零呢?

題目 給定乙個整數n,那麼n的階乘n!末尾有多少個零呢?末尾有幾個零?如果我們從哪些數相乘可以的出10,這個角度來解決這個問題,這就會變成簡單。對質因數進行分解由於10 2 5,即每一對2和5就可以產生乙個10,如果我們求出n 中,2和5的分別的次方數,假設為x,z,取決於兩個數中最小的那個數,於是...

實現乙個整數N,其階乘N!末尾有多少個0?

給定乙個整數n,那麼n的階乘n!末尾有多少個0呢?例如 n 10,n!3 628 800,n!的末尾有兩個0。也許很多人首先想的就是先求出其階乘,然後通過其階乘判斷末尾有多少個0 我的第乙個想法也是如此 以下是我對於這個思想的 實現 void n of zero int n printf the s...

輸入乙個正整數n,輸出n 的值。

輸入乙個正整數 n nn 輸出 n n n 的值。其中n 1 2 3 nn 1 2 3 cdots n n 1 2 3 n演算法描述 n n n 可能很大,而計算機能表示的整數範圍有限,需要使用高精度計算的方法。使用乙個陣列 a aa 來表示乙個大整數 a aa a 0 a 0 a 0 表示 a a...