खोज…


टिप्पणियों

कब इस्तेमाल करें

BigInteger ऑब्जेक्ट रैम पर बहुत भारी प्रकृति के होते हैं। नतीजतन, उनका उपयोग केवल तभी किया जाना चाहिए जब बिल्कुल आवश्यक हो, यानी सही मायने में खगोलीय पैमाने पर संख्याओं के लिए।

इसके अलावा, इन वस्तुओं पर सभी अंकगणितीय संचालन अपने आदिम समकक्षों की तुलना में परिमाण धीमी करने का एक क्रम है, यह समस्या और बढ़ जाती है क्योंकि संख्या एक निश्चित आकार की नहीं होती है। इसलिए यह संभव है कि किसी दुष्ट BigInteger के लिए उपलब्ध रैम के सभी का उपभोग करके दुर्घटना का कारण हो।

वैकल्पिक

यदि गति आपके समाधान के लिए अत्यावश्यक है, तो इस कार्यशीलता को लागू करने के लिए यह और अधिक कुशल हो सकता है कि एक Byte[] रैपिंग क्लास का उपयोग कर Byte[] और आवश्यक ऑपरेटरों को खुद को ओवरलोड कर। हालांकि, इसके लिए अतिरिक्त प्रयास की एक महत्वपूर्ण राशि की आवश्यकता होती है।

पहले 1,000 अंकों की फाइबोनैचि संख्या की गणना करें

using System.Numerics शामिल करें और Project के लिए System.Numerics का संदर्भ जोड़ें।

using System;
using System.Numerics;

namespace Euler_25
{
    class Program
    {
        static void Main(string[] args)
        {
            BigInteger l1 = 1;
            BigInteger l2 = 1;
            BigInteger current = l1 + l2;
            while (current.ToString().Length < 1000)
            {
                l2 = l1;
                l1 = current;
                current = l1 + l2;
            }
            Console.WriteLine(current);
        }
    }
}

यह सरल एल्गोरिथ्म फाइबोनैचि संख्याओं से गुजरता है जब तक कि यह लंबाई में कम से कम 1000 दशमलव अंकों तक नहीं पहुंचता है, फिर इसे प्रिंट करता है। यह मूल्य उस समय की तुलना में काफी बड़ा है जब तक कि कोई ulong पकड़ नहीं सकता।

सैद्धांतिक रूप से, BigInteger वर्ग पर एकमात्र सीमा RAM की मात्रा है जो आपका एप्लिकेशन उपभोग कर सकता है।

नोट: BigInteger केवल .NET 4.0 और उच्चतर में उपलब्ध है।



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow