Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ में बूस्ट लाइब्रेरी द्वारा बड़ी संख्याएं हैंडल करना


C++ में बड़ी संख्याओं (बड़े इंटीजर, हाई प्रिसिजन फ्लोट) को हैंडल करने के लिए Boost.Multiprecision लाइब्रेरी का उपयोग करें। यह बिल्ट-इन टाइप्स (long long 64-बिट तक) की सीमा से आगे जाती है।

मुख्य डेटा टाइप्स

टाइपविवरणप्रिसिजन
cpp_intआर्बिट्ररी प्रिसिजन इंटीजरअनलिमिटेड (रनटाइम पर)
int128_tफिक्स्ड 128-बिट साइन्ड इंटीजर128 बिट (~38 डिजिट)
int256_tफिक्स्ड 256-बिट साइन्ड इंटीजर256 बिट (~77 डिजिट)
int1024_tफिक्स्ड 1024-बिट साइन्ड इंटीजर1024 बिट (~308 डिजिट)
cpp_dec_float_50आर्बिट्ररी प्रिसिजन फ्लोटिंग पॉइंट50 डेसीमल डिजिट

उदाहरण 1: बड़ी संख्याओं का गुणनफल (int128_t)

#include <iostream>
#include <boost/multiprecision/cpp_int.hpp>
using namespace boost::multiprecision;
using namespace std;

int128_t largeProduct(long long n1, long long n2) {
    int128_t ans = (int128_t)n1 * n2;
    return ans;
}

int main() {
    long long num1 = 98745636214564698LL;
    long long num2 = 7459874565236544789LL;
    
    cout << "Product of " << num1 << " * " << num2 << " = "
         << largeProduct(num1, num2) << endl;
    return 0;
}

आउटपुट

Product of 98745636214564698 * 7459874565236544789 = 736630060025131838840151335215258722

उदाहरण 2: बड़े नंबर का फैक्टोरियल (cpp_int)

#include <iostream>
#include <boost/multiprecision/cpp_int.hpp>
using namespace boost::multiprecision;
using namespace std;

cpp_int largeFactorial(int n) {
    cpp_int fact = 1;
    for (int i = 2; i <= n; ++i)
        fact *= i;
    return fact;
}

int main() {
    cout << "Factorial of 50: " << largeFactorial(50) << endl;
    cout << "Factorial of 100: " << largeFactorial(100) << endl;
    return 0;
}

आउटपुट

Factorial of 50: 30414093201713378043612608166064768844377641568960512000000000000
Factorial of 100: 93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000

उदाहरण 3: हाई प्रिसिजन फ्लोटिंग पॉइंट

#include <iostream>
#include <boost/multiprecision/cpp_dec_float.hpp>
#include <boost/math/constants/constants.hpp>
using namespace boost::multiprecision;
using namespace std;

int main() {
    // 50 डिजिट प्रिसिजन
    cpp_dec_float_50 pi = boost::math::constants::pi<cpp_dec_float_50>();
    cout << "Pi (50 digits): " << pi << endl;
    
    // वर्गमूल
    cpp_dec_float_50 sqrt2 = sqrt(cpp_dec_float_50(2));
    cout << "Sqrt(2): " << sqrt2 << endl;
    
    return 0;
}

कंपाइलेशन

g++ -std=c++17 -O2 -I/path/to/boost program.cpp -o program

नोट: Boost हेडर-ओनली लाइब्रेरी है, अलग से लिंकिंग की आवश्यकता नहीं। C++11 या बाद का संस्करण आवश्यक।

  1. C++ में डुडनी नंबर (Dudeney Numbers) C++ में डुडनी नंबर (Dudeney Numbers)

    संख्या सिद्धांत में परिभाषित एक गणितीय संख्या एक दी गई संख्या आधार में एक प्राकृतिक संख्या है जो दूसरी प्राकृतिक संख्या के पूर्ण घन के बराबर होती है जैसे कि पहली प्राकृतिक संख्या का अंक योग दूसरी संख्या के अंक योग के बराबर होता है (विकिपीडिया)। इस संख्या की खोज हेनरी डुडनी ने की थी। इसका गणितीय सू

  1. - C++ में सरणियों का उपयोग करके संख्याओं का औसत गणना करने का प्रोग्राम

    संख्याओं का औसत सभी संख्याओं को जोड़कर और फिर योग को उपलब्ध संख्याओं की संख्या से विभाजित करके गणना किया जाता है। इसका एक उदाहरण निम्नलिखित है। जिन संख्याओं का औसत निकालना है: 10, 5, 32, 4, 9 संख्याओं का योग = 60 संख्याओं का औसत = 60/5 = 12 सरणियों का उपयोग करके संख्याओं का औसत गणना करने वाला एक प्र

  1. - C++ में रिकर्सन का उपयोग करके प्राकृतिक संख्याओं का योग खोजने का प्रोग्राम

    प्राकृतिक संख्याएँ 1 से शुरू होने वाले धनात्मक पूर्णांक हैं। प्राकृतिक संख्याओं का क्रम निम्नलिखित है: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10... पहली n प्राकृतिक संख्याओं का योग रिकर्सन का उपयोग करके खोजने का प्रोग्राम निम्नलिखित है। उदाहरण #include <iostream> using namespace std; int sum(int n) { &nbs