इस समस्या में, हमें एक पूर्णांक का अधिकतम मान ज्ञात करने के लिए एक प्रोग्राम बनाने की आवश्यकता होती है जिसके लिए C++ में किसी मशीन पर फैक्टोरियल की गणना की जा सकती है।
किसी संख्या का भाज्य एक बहुत बड़ा मान होता है, क्योंकि यह उससे पहले के सभी मानों का गुणनफल होता है। और सी ++ अपने इनबिल्ट फ़ंक्शन का उपयोग करके केवल एक निश्चित मूल्य तक बड़े मूल्यों को संभाल सकता है। हमें इस प्रतिबंध को खोजने की जरूरत है।
समाधान दृष्टिकोण
हम केवल डेटा प्रकारों की संपत्ति का उपयोग करेंगे, जो कि जब संख्याएं अधिकतम मान से अधिक हो जाती हैं तो एक ऋणात्मक संख्या वापस आ जाती है।
हम long long int का उपयोग करेंगे जो कि सबसे बड़ा बुनियादी डेटा प्रकार है।
उदाहरण
#include <iostream> using namespace std; int calcMaxFactVal(){ int maxVal = 1; long long int maxFactorial = 1; while (true){ if (maxFactorial < 0) return (maxVal - 1); maxVal++; maxFactorial *= maxVal; } return - 1; } int main(){ cout<<"The maximum value of an integer for which factorial can be calculated on machine is "<<calcMaxFactVal(); return 0; }
आउटपुट
The maximum value of an integer for which factorial can be calculated on machine is 20