"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > क्या यह निर्धारित करने का कोई विश्वसनीय तरीका है कि एक बड़ा पूर्णांक एक पूर्ण वर्ग है या नहीं?

क्या यह निर्धारित करने का कोई विश्वसनीय तरीका है कि एक बड़ा पूर्णांक एक पूर्ण वर्ग है या नहीं?

2024-11-10 को प्रकाशित
ब्राउज़ करें:997

Is There a Reliable Way to Determine if a Large Integer Is a Perfect Square?

पूर्ण वर्ग और पूर्णांक: एक संख्यात्मक अन्वेषण

यह निर्धारित करना कि कोई दी गई संख्या पूर्ण वर्ग के रूप में योग्य है या नहीं, शुरू में सरल लग सकता है। हालाँकि, जब बड़े पूर्णांकों और फ़्लोटिंग-पॉइंट गणनाओं की पेचीदगियों पर विचार किया जाता है, तो चुनौती अधिक स्पष्ट हो जाती है।

पूर्णांक-आधारित दृष्टिकोण

अत्यावश्यक आवश्यकता के अभाव में गति के लिए, पूर्णांक-आधारित दृष्टिकोण पूर्ण वर्गों की जाँच का एक विश्वसनीय साधन प्रदान करते हैं। वर्गमूल गणना के लिए बेबीलोनियन एल्गोरिथ्म से प्रेरणा लेते हुए, ये विधियाँ इस विचार में निहित हैं कि प्रारंभिक सन्निकटन का पुनरावृत्तीय परिशोधन अंततः परिशुद्धता की ओर ले जाता है।

विशेष रूप से, निम्नलिखित पायथन फ़ंक्शन, is_square(), इसे नियोजित करता है रणनीति:

def is_square(apositiveint):
  x = apositiveint // 2
  seen = set([x])
  while x * x != apositiveint:
    x = (x   (apositiveint // x)) // 2
    if x in seen: return False
    seen.add(x)
  return True

यह दृष्टिकोण प्रारंभिक सन्निकटन, x से शुरू होता है, जिसे आधे इनपुट सकारात्मक के रूप में परिभाषित किया गया है। इसके बाद यह एक पुनरावृत्तीय प्रक्रिया में प्रवेश करता है जहां x को तब तक संशोधित किया जाता है जब तक कि यह वास्तविक वर्गमूल, apositiveint पर परिवर्तित न हो जाए। . यदि पुनरावृत्ति का पता चलता है, तो यह अभिसरण की कमी को इंगित करता है, और फ़ंक्शन गलत लौटाता है। अन्यथा, यह तब सत्य होता है जब x * x apositiveint के बराबर होता है। ]i के लिए रेंज में (110, 130): print(i, is_square(i))

यह लूप 110 से 129 तक पूर्णांकों की एक श्रृंखला पर पुनरावृत्त होता है, प्रत्येक संख्या को पूर्ण वर्ग स्थिति के लिए जाँचता है। आउटपुट फ़ंक्शन की सटीकता की पुष्टि करता है, जिसमें गैर-पूर्ण वर्गों के लिए गलत मुद्रित किया जाता है और पूर्ण वर्गों के लिए सत्य मुद्रित किया जाता है।

फ़्लोटिंग-पॉइंट विचार

यह ध्यान दिया जाना चाहिए जबकि फ़्लोटिंग-पॉइंट गणना एक स्पष्ट समाधान प्रदान कर सकती है, वे राउंडिंग त्रुटियों का जोखिम पेश करते हैं जिससे गलत निष्कर्ष निकल सकते हैं। चूँकि पूर्णांक गुणन और घातांक सटीक संचालन हैं, पूर्णांक-आधारित दृष्टिकोण सटीकता सुनिश्चित करता है, विशेष रूप से बड़ी संख्याओं के लिए।

for i in range(110, 130):
   print(i, is_square(i))
Gmpy लाइब्रेरी

यदि गति प्राथमिकता है, तो gmpy लाइब्रेरी पूर्णांक फ़ंक्शंस का अत्यधिक कुशल कार्यान्वयन प्रदान करती है। विशेष रूप से, इसकी is_square() विधि पर्याप्त प्रदर्शन लाभ प्रदान करती है:import gmpy gmpy.is_square(x**7) gmpy.is_square(x**7 1)

बहुत बड़े पूर्णांकों पर किए गए ये ऑपरेशन, gmpy लाइब्रेरी की असाधारण क्षमताओं को दर्शाते हैं। हालाँकि, इसका उपयोग कम्प्यूटेशनल रूप से गहन अनुप्रयोगों के लिए रनटाइम जटिलता और मेमोरी उपयोग के बारे में चिंताएँ पैदा कर सकता है।

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3