बड़े घातांक के साथ (a^b)%MOD की गणना करना
इस कोडिंग चुनौती में, कार्य पाउ के मूल्य की गणना करना है( a, b)%MOD, जहां घातांक b अत्यंत बड़ा हो सकता है। जबकि पारंपरिक लॉग (बी) समय जटिलता विधि छोटे मानों के लिए उपयुक्त है, यह तब अव्यावहारिक हो जाती है जब बी सी में लंबे लंबे डेटा प्रकारों की क्षमता से अधिक हो जाता है।
हालांकि, एक अधिक कुशल दृष्टिकोण में यूलर के टोटिएंट फ़ंक्शन का लाभ उठाना शामिल है, φ(एमओडी)। यूलर का प्रमेय बताता है कि a^φ(MOD)≡1(mod MOD)। इसका मतलब यह है कि a की शक्ति को काफी हद तक घटाकर a^(b % φ(MOD)) किया जा सकता है।
φ(MOD) की गणना करना अपने आप में एक गैर-तुच्छ कार्य है, लेकिन पूर्णांक गुणनखंडन विधियों का उपयोग करके इसे प्राप्त किया जा सकता है। . एक बार गणना करने के बाद, गणना समय को नाटकीय रूप से कम करने के लिए घातांक b को b % φ(MOD) से बदला जा सकता है। (बी) 1 से बी तक के आई के लिए जीसीडी(बी, आई) के असतत फूरियर रूपांतरण से प्राप्त किया जा सकता है। यह स्पष्ट गुणनखंडन की आवश्यकता को समाप्त करता है।
इसके अतिरिक्त, कारमाइकल के फ़ंक्शन, λ(MOD), का उपयोग सही उत्तर प्राप्त करने के लिए किया जा सकता है, खासकर जब a और MOD सामान्य कारक साझा करते हैं।
कोड कार्यान्वयननिम्नलिखित कोड स्निपेट C में एक उदाहरण के रूप में कार्य करता है:
#include
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3