मैं वर्तमान में 7 अंकों से विभाजित करके अपनी खुद की BigInt कक्षा बना रहा हूं। (यानी आधार 10,000,000 में)कैसे बड़े (बड़े) विभाजन को कार्यान्वित करने के लिए?
मैंने अतिरिक्त, घटाव और गुणा लागू किया, और अब मैं विभाजन और मोड लागू कर रहा हूं। मैंने एक कोड लिखा जो लंबे विभाजन से विभाजन करता है (सबसे महत्वपूर्ण अंकों को विभाजित करके संख्याओं का अनुमान लगाता है), और यह काम करता है।
हालांकि, यह बहुत धीमी है। जब मैं 108 अंकों की संख्या और 67 अंकों की संख्या पर संचालन का परीक्षण करता हूं, तो विभाजन की गणना करने के लिए 1.9 एमएमएस लगता है, अन्य परिचालनों की तुलना में बहुत धीमी है (अतिरिक्त/घटाव की गणना करने के लिए 0.007 ~ 0.008ms, गुणा की गणना करने के लिए 0.1 मिमी)।
तेज गुणा के लिए करात्सुबा और एफएफटी एल्गोरिदम की तरह, विभाजन की गणना के लिए क्या एल्गोरिदम मौजूद है? Wikipedia कुछ डिवीजन एल्गोरिदम प्रदर्शित करता है (जो विभाजक के गुणात्मक उलटा गणना करता है और इसे लाभांश के साथ गुणा करता है), लेकिन मुझे लगता है कि यह मुझे अधिक कार्यान्वयन विभाजन में मदद नहीं करता है। मैंने 'बड़े पूर्णांक विधियों' खंडों को भी पढ़ा है, लेकिन यह मेरी भी मदद नहीं करता है ... :(
अच्छा सवाल है, लेकिन आप stackoverflow के बजाय http://programmers.stackexchange.com पर विचार कर सकते हैं। –
सरल Google खोज इस बारे में लेख के स्वर दिखाती है, मुझे नहीं लगता कि यह आसान काम है, लेकिन मुख्य आइडिया तेजी से गुणा का उपयोग करता है, और सभी एल्गोरिदम इस के आसपास हैं। उदाहरण के लिए आप [बड़े पूर्णांक में तेज़ विभाजन] देख सकते हैं (http://www.treskal.com/kalle/exjobb/original-report.pdf) –
कोई भी मौका आप इसे खोल सकते हैं? वर्तमान में जेएस के लिए एक अच्छी बड़ी पुस्तकालय नहीं है। –