ফ্যাক্টোরিয়াল মান খুব দ্রুত বড় হয়। C++-এর বিল্ট-ইন টাইপ (long long) যা পর্যন্ত ধারণ করতে পারে, সেই সর্বোচ্চ পূর্ণসংখ্যা খুঁজে বের করতে হবে।
অ্যালগরিদম
long longব্যবহার করে ফ্যাক্টোরিয়াল হিসাব করুন।- যখন ফ্যাক্টোরিয়াল নেগেটিভ হয় (ওভারফ্লো), তখন আগের মানই সর্বোচ্চ।
C++ প্রোগ্রাম
#include <iostream>
using namespace std;
int calcMaxFactVal() {
int maxVal = 1;
long long maxFactorial = 1;
while (true) {
if (maxFactorial < 0) return (maxVal - 1);
maxVal++;
maxFactorial *= maxVal;
}
return -1;
}
int main() {
cout << "The maximum value for factorial calculation is " << calcMaxFactVal();
return 0;
}
আউটপুট: The maximum value of an integer for which factorial can be calculated on machine is 20
দ্রষ্টব্য: 20! = 2,432,902,008,176,640,000 (long long-এর রেঞ্জে)। 21! ওভারফ্লো করে।