在 C++ 中計算給定範圍內階乘數
給定一個範圍,從一個變數(假設為 start)儲存的整數值開始,到變數 end 結束,任務是計算給定範圍內可用的階乘數的總數。
什麼是階乘數
一個數的階乘是透過將該數的數字相乘,同時將數字的值遞減 1 來計算的。它用符號“!”表示,例如 0!、1!、2!、3!、5!、……等等。0!和 1!的階乘始終為 1。
I.e. factorial of 2 = 2 * (2-1) = 2 * 1 = 2 factorial of 3 = 3 * (3-1) * (2-1) = 3 * 2 * 1 = 6
例如
Input − start = 5, end = 600 Output − Count of factorial numbers are 3
解釋 - 因為在 5-600 的範圍內有 3 個數字具有階乘數。
Input − start = 1, end = 100 Output − Count of factorial numbers are 5
解釋 - 因為在 5-600 的範圍內有 5 個數字具有階乘數。
下面程式中使用的方案如下
輸入範圍並存儲在變數 start 和 end 中
使用另一個變數“fact”來儲存階乘值,並將其初始化為 1,以及一個臨時變數“i”來增加數字計數。
啟動迴圈,當 fact 小於 start 時,繼續將 fact 與 i 相乘以計算階乘,並且同時繼續增加 i 的值。
啟動另一個迴圈,當 fact 小於等於 end 變數時,繼續增加變數 r 的值,並繼續將 fact 設定為 fact * i,同時繼續增加 i 的值。
現在,返回 r 的值,該值儲存著階乘數的總數。
列印結果。
示例
#include <iostream>
using namespace std;
// To count the number of factorials
int factorials(int start, int end){
// Starting from 1 and find the first factorial number
// 'fact' greater than or equal to 'start'
int fact = 1, i = 1;
while (fact < start){
fact = fact*i;
i++;
}
// r to count factorial numbers in range start to end
int r = 0;
while (fact <= end){
r++;
fact = fact*i;
i++;
}
// Return the count of factorials in range
return r;
}
int main(){
int start = 5, end = 600;
cout << "Count of factorial numbers are " << factorials(start, end);
return 0;
}輸出
如果我們執行以上程式碼,它將生成以下輸出:
Count of factorial numbers are 3
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP