c# हरण सी#में बड़े पूर्णांक




सबसे छोटा पूर्णांक (10)

वर्तमान में मैं यहां वर्णित जे # पुस्तकालयों से java.math.BigInteger उधार ले रहा हूं। पहले बड़े पूर्णांक के साथ काम करने के लिए लाइब्रेरी का उपयोग कभी नहीं किया, यह धीमा लगता है, 10 गुना धीमी गति के क्रम में, यहां तक ​​कि लम्बाई संख्या के लिए भी। क्या किसी के पास कोई बेहतर (अधिमानतः मुफ्त) पुस्तकालय है, या प्रदर्शन का यह स्तर सामान्य है?


F# भी एक के साथ जहाज। आप इसे Microsoft.FSharp.Math पर प्राप्त कर सकते हैं।


यह आपकी मदद नहीं करेगा, लेकिन नेट 3.5 में बिगइंटर वर्ग होना चाहिए था; यह कट गया, लेकिन पीडीसी में किए गए बयान से, यह नेट 4.0 में होगा। उन्होंने स्पष्ट रूप से इसे अनुकूलित करने में काफी समय बिताया है, इसलिए प्रदर्शन अब आप जो प्राप्त कर रहे हैं उससे कहीं बेहतर होना चाहिए।

इसके अलावा, यह सवाल अनिवार्य रूप से एक डुप्लिकेट है कि मैं .NET में एक बहुत बड़े पूर्णांक का प्रतिनिधित्व कैसे कर सकता हूं?


.NET 4.0 में System.Numerics.BigInteger क्लास Microsoft Research से Microsoft.SolverFoundation.Common.BigInteger पर आधारित है।

सोलवर फाउंडेशन की BigInteger श्रेणी बहुत ही BigInteger दिखती है। मुझे यकीन नहीं है कि यह किस लाइसेंस के तहत जारी किया गया है, लेकिन आप इसे here प्राप्त कर सकते here (सॉल्वर फाउंडेशन को डाउनलोड और इंस्टॉल करें और Microsoft.Solver.Foundation.dll को ढूंढें)।


मैंने पिछले नौकरी में बिगिनटेगर का इस्तेमाल किया था। मुझे नहीं पता कि आपके पास किस प्रकार की प्रदर्शन की ज़रूरत है। मैंने इसे प्रदर्शन-गहन परिस्थिति में उपयोग नहीं किया, लेकिन इसके साथ कभी भी कोई समस्या नहीं थी।


मुझे लगता है कि आप कार्यान्वयन को अनुकूलित कर सकते हैं यदि आप बिगइंट्स पर सभी परिचालनों को निष्पादित करते हैं जो मूल प्रकारों पर देशी प्रकार (जैसे इंट 64) से छोटे परिणाम लौटने जा रहे हैं और यदि आप अतिप्रवाह पर जा रहे हैं तो केवल बड़े सरणी से निपटें।

कोडप्रोजेक्ट पर यह कार्यान्वयन संपादित करें , केवल 7 गुना धीमा लगता है ... लेकिन उपर्युक्त अनुकूलन के साथ आप इसे छोटे संख्याओं के लिए देशी प्रकारों के लगभग समान रूप से निष्पादित करने के लिए प्राप्त कर सकते हैं।


.NET 4.0 के रूप में आप System.Numerics.BigInteger क्लास का उपयोग कर सकते हैं। यहां दस्तावेज़ देखें: http://msdn.microsoft.com/en-us/library/system.numerics.biginteger(v=vs.110).aspx

एक और विकल्प IntX वर्ग है।

इंटेल एक मनमानी सटीक पूर्णांक लाइब्रेरी है जो शुद्ध सी # 2.0 में तेजी से ओ (एन * लॉग एन) - गुणा / विभाजन एल्गोरिदम कार्यान्वयन के साथ लिखा गया है। यह पूर्णांक पर सभी बुनियादी संचालन प्रदान करता है जैसे अतिरिक्त, गुणा, तुलना, बिटवाईट स्थानांतरण आदि।


मुझे प्रदर्शन के बारे में निश्चित नहीं है, लेकिन आयरनपीथन में बिगइंटर वर्ग भी है। यह माइक्रोसॉफ्ट में है। स्क्रिप्टिंग। मैथ नेमस्पेस।


यह एक अजीब सुझाव की तरह लग सकता है, लेकिन क्या आपने decimal प्रकार का परीक्षण किया है यह देखने के लिए कि यह कितनी तेज़ी से काम करता है?

दशमलव सीमा ± 1.0 × 10 ^ -28 से ± 7.9 × 10 ^ 28 है, इसलिए यह अभी भी काफी बड़ी नहीं हो सकती है, लेकिन यह उलझन से बड़ी है।

.NET 3.5 में बिगइंटर वर्ग होना चाहिए था, लेकिन यह कट गया


इस thread में जवाब देखें। आपको उपलब्ध तीसरे पक्ष के बड़े पूर्णांक पुस्तकालयों / कक्षाओं में से एक का उपयोग करने की आवश्यकता होगी या सी # 4.0 के लिए प्रतीक्षा करें जिसमें मूल बिगइंटर डेटाटाइप शामिल होगा।


सी # में BigInteger के कई कार्यान्वयन यहां दिए गए हैं। मैंने मोनो बिगइंटर कार्यान्वयन का उपयोग किया है, बहुत तेजी से काम करता है (मैंने इसे कॉम्पैक्टफ्रेमवर्क में उपयोग किया है)

उछालदार झूला

Mono





j#