C++中計算階乘的尾隨零個數
給定一個整數作為輸入。目標是找到該數字階乘計算中尾隨零的個數。一個數字 N 的階乘是範圍 [1, N] 內所有數字的乘積。
我們知道,只有當數字是 10 的倍數或具有因子對 (2,5) 時,我們才會得到尾隨零。在任何大於 5 的數字的階乘中,在該數字的質因數分解中,2 的個數都多於 5 的個數。將數字除以 5 的冪將給出其因子中 5 的個數。因此,5 的個數將告訴我們尾隨零的個數。
例如
輸入
number=6
輸出
Count of trailing zeros in factorial of a number are: 1
解釋
The factorial is 30. Prime factors of 30 : 2 * 3 * 5 So only one pair of (2,5) exists so trailing zeros is 1.
輸入
number=12
輸出
Count of trailing zeros in factorial of a number are: 2
解釋
The factorial is 479001600. Prime factors of 479001600 : 210 x 35 x 52 x 71 x 111 So we can get 2 pairs of (2,5) so trailing zeros are 2
下面程式中使用的演算法如下 −
在這種方法中,我們將用 5 的冪來除以該數字。如果結果大於 1,則尾隨零的個數將是 5 的個數。將其新增到計數中。
將一個整數作為輸入。
函式 `trailing_zeros(int number)` 獲取數字並返回該數字階乘中尾隨零的個數。
將初始計數設定為 0。
使用 for 迴圈,將數字除以 5 的冪。
如果 number/i 大於 1,則將此值新增到計數中。
在迴圈結束時返回計數作為結果。
示例
#include <iostream>
using namespace std;
int trailing_zeros(int number){
int count = 0;
for (int i = 5; number / i >= 1; i *= 5){
int temp = number / i;
count = count + temp;
}
return count;
}
int main(){
int number = 50;
cout<<"Count of trailing zeros in factorial of a number are: "<<trailing_zeros(number);
return 0;
}輸出
如果我們執行上述程式碼,它將生成以下輸出:
Count of trailing zeros in factorial of a number are: 12
廣告
資料結構
網路
關係型資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP