एक तरह से उनके gcd की गणना और जाँच अगर यह होता है 1.यह जांचने का सबसे तेज़ तरीका क्या है कि दो दिए गए नंबर coprime हैं?
वहाँ कुछ तेजी से रास्ता है के लिए है?
एक तरह से उनके gcd की गणना और जाँच अगर यह होता है 1.यह जांचने का सबसे तेज़ तरीका क्या है कि दो दिए गए नंबर coprime हैं?
वहाँ कुछ तेजी से रास्ता है के लिए है?
यूक्लिडियन एल्गोरिदम (gcd
की गणना) बहुत तेज है। जब [1, n]
से यादृच्छिक रूप से दो संख्याओं को समान रूप से खींचा जाता है, तो उनके gcd
की गणना करने के लिए चरणों की औसत संख्या O(log n)
है। प्रत्येक चरण के लिए आवश्यक औसत गणना समय अंकों की संख्या में वर्गबद्ध है।
ऐसे विकल्प हैं जो कुछ हद तक बेहतर प्रदर्शन करते हैं (यानी, प्रत्येक चरण अंकों की संख्या में subquadratic है), लेकिन वे केवल बहुत बड़े पूर्णांक पर प्रभावी हैं। उदाहरण के लिए, On Schönhage's algorithm and subquadratic integer gcd computation देखें।
यदि आप ऐसी मशीन पर चल रहे हैं जिसके लिए विभाजन/शेष बदलावों की तुलना में काफी महंगा है, तो binary GCD पर विचार करें।
धन्यवाद, दिलचस्प पढ़ें –
हाँ, वहां एक बहुत अच्छा लेख है। – Lazer
बस इसे पारंपरिक रूप से कार्यान्वित किया गया है और पारंपरिक यूक्लिड की जीसीडी की तुलना में 2x से अधिक तेज है, यह सटीक संख्या नहीं दे सकता है क्योंकि मेरे माप को मापने वाला अन्य कोड है, हालांकि इसकी> 2x तेज है। अच्छा जेसन खोजें। – gatapia
मैं टिप्पणी करना चाहता हूं कि अंकगणितीय परिचालनों की लागत को ध्यान में रखे बिना अंकगणितीय एल्गोरिदम की जटिलता को मापने के लिए यह थोड़ा मोटा है। –
चरणों का सबसे खराब # ओ (लॉग एन) भी है, जब दो संख्याएं फिबोनाची अनुक्रम में लगातार प्रविष्टियां होती हैं। –
@ पावेल शेव किया गया: मैंने लागत को ध्यान में रखा। सीएफ वाक्य "प्रत्येक चरण के लिए आवश्यक औसत गणना समय अंकों की संख्या में वर्गबद्ध है।" – jason