Overflow error Python for Modular Cubes -
इस समस्या को हल करने का प्रयास:
एक सकारात्मक संख्या n के लिए, एस (n ) के रूप में integers x की राशि के लिए, जिसके लिए
1 & lt; X & lt; N और
x ^ 3 â ?? ¡1 mod n ।
जब
n = 91 , एक्स के लिए 8 संभावित मान हैं 9, 16, 22, 29, 53, 74, 79, 81. इस प्रकार,
S (91) = 9 + 16 + 22 + 29 + 53 + 74 + 79 + 81 = 363 ।
खोज एस (13082761331670030)।
बेशक, मेरा कोड
S (91) के लिए काम करता है और जब
एस (13082761331670030) मुझे दो भिन्न त्रुटियां मिलती हैं।
यहां मेरा कोड है:
def modcube (n): results = [] के लिए k में श्रेणी (1, एन): यदि k ** 3% n == 1: results.append (k) रिटर्न परिणाम
यह
अतिप्रवाह त्रुटि उत्पन्न करता है: श्रेणी में बहुत अधिक आइटम हैं । जब मैं 'रेंज' के बजाय 'एक्सरेन्ज' का उपयोग करने की कोशिश करता हूं, तो मुझे एक त्रुटि मिलती है जिसमें अजगर int बहुत बड़ी है जिसे लंबे समय से कन्वर्ट करने के लिए कहा जाता है। मैंने सफलता के बिना कई अन्य चीजों की कोशिश की है
क्या कोई मुझे सही तरीके से बताए बिना सही दिशा में मुझसे बात कर सकता है?
कोई घृणास्पद हो। मैं इसे दो दिनों के लिए कर रहा हूं, मेरा अगले विकल्प जावा में इसे लागू करने की कोशिश करना है जब से मैं पायथन में नया हूँ।
मुझे लगता है कि आपको चाहिए यहां दो अवधारणाओं को समझने के लिए:
1 सी और पायथन में पूर्णांक का प्रतिनिधित्व
आपके द्वारा उपयोग किए जाने वाले पायथन का कार्यान्वयन सीपीआईथॉन कहा जाता है, क्योंकि यह सी भाषा का उपयोग करते हुए लिखा है। सी में, लंबे पूर्णांक (आमतौर पर) 32 बिट लंबे होते हैं इसका मतलब यह है कि यह 2147483647 और 2147483648 के बीच पूर्णांक के साथ काम कर सकता है। पायथन में, जब एक पूर्णांक इस सीमा से अधिक है, तो यह उन्हें मनमाना सटीक पूर्णांक में रूपांतरित कर देता है, जहां पूर्णांक का आकार आपके कंप्यूटर की मेमोरी तक सीमित है। हालांकि, उन मनमानी पूर्णांक पर कार्य (पायथन में लम्बे पूर्णांक कहा जाता है) परिमाण के 32 बिट इंटिजर पर ऑपरेशन की तुलना में धीमी गति के क्रम हैं।
2
श्रेणी और
xrange :
श्रेणी के बीच का अंतर सूची तैयार करता है। यदि आपके पास
सीमा (10) है, तो यह सूची
[0, 1, ... 9] पूरी तरह से मेमोरी में संग्रहीत करता है। यही कारण है कि स्मृति में 13082761331670030 आइटम की एक सूची को संचय करना बहुत मुश्त है। प्रत्येक संख्या को मानते हुए 64 बिट, संपूर्ण सूची को स्टोर करने के लिए 9 3 टीबी रैम की आवश्यकता होगी!
एक्सरेन्ज एक इटरेटर का उत्पादन करता है यह प्रत्येक नंबर एक के बाद एक देता है इस तरह, यह पूरी सूची मेमोरी में संग्रहित किए बिना सूची के प्रत्येक नंबर पर कार्य करने की अनुमति देता है लेकिन फिर, 13082761331670030 पर गणना करने के लिए अलग-अलग संख्याओं को अधिक समय लग सकता है कि आपको लगता है ... दूसरी बात
xrange के बारे में यह है कि यह पायथन लंबे पूर्णांक के साथ काम नहीं करता है; यह सीमित (गति कारणों के लिए) 32 बिट पूर्णांक है यही कारण है कि आपका प्रोग्राम
xrange का उपयोग करके काम नहीं करता है।
नीचे की रेखा: प्रोजेक्ट यूलर समस्याएं (अधिक या कम) कठिनाई की डिग्री से वर्गीकृत हैं आपको सबसे पहले कम समस्याओं से शुरू करना चाहिए।
Comments
Post a Comment