संभव डुप्लिकेट:
The most efficient way to implement an integer based power function pow(int, int)गिना जा रहा है शक्तियों (जैसे 2^11) जल्दी से
मैं कैसे की गणना कर सकते बेहतर क्रम के साथ शक्तियों?
उदा। 2^13।
मैंने कहीं देखकर यह निम्नलिखित गणना के साथ क्या करना है कि कुछ याद रखें:
2^13 = 2^8 * 2^4 * 2^1
लेकिन मैं नहीं देख सकते हैं कि की गणना समीकरण के दाहिने तरफ के प्रत्येक घटक और फिर उन्हें गुणा करने से मेरी मदद मिलेगी।
कोई भी विचार?
संपादित करें: मेरा मतलब किसी भी आधार के साथ था। नीचे उल्लिखित एल्गोरिदम, विशेष रूप से "स्क्वायरिंग द्वारा एक्सपोनेंटेशन", रनटाइम/जटिलता में सुधार कैसे करते हैं?
डुप्लिकेट: http: // stackoverflow।कॉम/प्रश्न/101439/सबसे-कुशल-तरीके-से-कार्यान्वयन-ए-इंटीजर-आधारित-पावर-फ़ंक्शन-पॉविंट-इंट –
"स्क्वायरिंग द्वारा एक्सपोनेंटेशन" 'लॉग' एक्स 'में 'base^exp' की गणना करता है' चरण, जहां * लॉग * बेस 2 के साथ लॉगरिदम है। –
@ निक डी, मुझे पता है कि मैं बताता हूं कि मेरे उत्तर में, लेकिन मुझे एहसास हुआ कि मैं थोड़ा गलत हूं। यदि आप मानक पूर्णांक का उपयोग कर रहे हैं तो यह मूल रूप से सही है। लेकिन एक बार जब आप बिग्नम का उपयोग कर लेते हैं तो यह मूल रूप से 'ओ (लॉग (एन)^2) बन जाता है क्योंकि बहुगुणित ओ (1) समय से अधिक लेते हैं। – Omnifarious