जवाबों:
तेजी से फूरियर को बदलने का उपयोग करके, पर गुणा -बिट संख्या समय में किया जा सकता ~ हे ( कश्मीर ) (जहां टिल्ड का प्रतीक है कि हम polylogarithmic कारकों की अनदेखी कर रहे हैं)। बार-बार स्क्वैरिंग करके, हम n n 2 को O ( log n ) गुणन के साथ गणना कर सकते हैं , और प्रत्येक गुणन में n n 2 से बड़ी कोई संख्या शामिल नहीं है , जिसमें लगभग n 2 लॉग 2 n बिट्स हैं। तो समय की कुल राशि की आवश्यकता है ~ हे ( एन 2 ( ।
टिप्पणी के जवाब में संपादित गणना करने के लिए समय में समय की गणना करने के लिए आवश्यक विघटित किया जा सकता च 1 ( एन ) = n 2 और उस करने के लिए आवश्यक n च 1 ( एन ) । मैं मान लेंगे कि एक गुणा मीटर एक से थोड़ा संख्या n बिट संख्या वास्तव में लेता मीटर n स्कूल किताब विधि द्वारा समय; परिवर्धन, आदि निरंतर समय है। नतीजतन, कंप्यूटिंग n 2 लॉग 2 लेता हैसमय।
मान लीजिए कि हम कंप्यूटिंग लिए द्विआधारी घातांक का उपयोग करते हैं । द्विआधारी घातांक कंप्यूटिंग में दो प्रकार के संचालन करता है f ( n ) : वर्तमान उत्पाद को स्क्वेर करना, और वर्तमान उत्पाद को n से गुणा करना , चाहे n 2 के बाइनरी विस्तार में वर्तमान बिट 0 या 1. सबसे खराब स्थिति में है। n 2 दो की एक शक्ति है, इतना है कि द्विआधारी घातांक बार-बार वर्गों अपने मौजूदा उत्पाद जब तक यह answer.Note कि पहुंचता है n 2 है मी ' = ⌈ 2 लॉग 2 ( एन बिट्स, ताकि इस तरह के squarings की संख्या है मीटर = मीटर ' - 1 । यह वह मामला है जिसका हम नीचे विश्लेषण करते हैं।
पहला वर्ग समय लेता है , जिसके परिणामस्वरूप ओ 1 = 2 लॉग 2 ( एन ) -बिट उत्पाद होता है। दूसरा स्क्वेरिंग दो ओ 1 बिट संख्या में होता है और टी 2 = ओ 2 1 समय में चलता है , जिसके परिणामस्वरूप ओ 2 = 2 ओ 1 -बिट उत्पाद होता है। जारी रखते हुए, i -th चरण t i = 4 i - 1 लॉग लेता हैसमय और आउटपुटoi=2iलॉग2(n)-बिट उत्पाद। यह प्रक्रियाएम-स्टेपपर रुकती है; नतीजतन, इसमें समय लगता है
।
जब प्रारंभिक स्क्वेरिंग लागत शामिल होती है, तो हम पाते हैं कि हमें सबसे अधिक समय चाहिए
ध्यान दें