C++ 中因數分解的尾部零


在這裡,我們將瞭解如何計算任意數階乘結果中的尾部 0 的數量。因此,如果 n = 5,則 5! = 120。其中只有一個尾部 0。對於 20!它將是 4 個零,因為 20!= 2432902008176640000。

最簡單的方法是直接計算階乘並統計 0 的數量。但是,對於較大的 n 值,此方法將失敗。因此,我們將遵循另一種方法。當質因數為 2 和 5 時,會出現尾部零。如果計算 2 和 5 的數量,就可以得到結果。為此,我們將遵循這條規則。

尾部 0 = 階乘(n) 質因數中 5 的數量

因此,尾部 0 = $$\lvert\frac{n}{5}\rvert+\lvert\frac{n}{25}\rvert+\lvert\frac{n}{125}\rvert+...$$

要解決此問題,我們需要遵循以下步驟:

  • 設定計數 = 0
  • 對於 i = 5,(n/i) > 1,更新 i = i * 5,執行
    • 計數 = 計數 + (n /i)
  • 返回計數

示例 (C++)

 線上演示

#include <iostream>
#include <cmath>
#define MAX 20
using namespace std;
int countTrailingZeros(int n) {
   int count = 0;
   for (int i = 5; n / i >= 1; i *= 5)
      count += n / i;
   return count;
}
main() {
   int n = 20;
   cout << "Number of trailing zeros: " << countTrailingZeros(n);
}

輸入

Number of trailing zeroes: 20

輸出

Number of trailing zeros: 4

更新於:28-4-2020

186 次瀏覽

開啟你的 職業 生涯

完成課程並獲得認證

開始
廣告
© . All rights reserved.