मैं ऑनलाइन पाया गया एल्गोरिदम का उपयोग करके दो वास्तव में बड़ी प्राइम संख्याएं उत्पन्न करना चाहता हूं और थोड़ा बदल गया हूं।पायथन ओवरफ्लो त्रुटि: इंडेक्स = आकार पूर्णांक में 'लंबा' फिट नहीं हो सकता
मैं लाइन 5 पर इस त्रुटि मिलती है:
Python OverflowError: cannot fit 'long' into an index=sized integer
मेरे कोड:
import math
def atkin(end):
if end < 2: return []
lng = ((end/2)-1+end%2)
**sieve = [True]*(lng+1)**
for i in range(int(math.sqrt(end)) >> 1):
if not sieve[i]: continue
for j in range((i*(i + 3) << 1) + 3, lng, (i << 1) + 3):
sieve[j] = False
primes = [2]
primes.extend([(i << 1) + 3 for i in range(lng) if sieve[i]])
return primes
मैं अपने त्रुटि को ठीक कर सकते हैं?
यदि आप बड़े प्राइम उत्पन्न करने के लिए एक बेहतर तरीका जानते हैं, तो यह सहायक भी होगा।
क्या आपने इस कोड को छोटी संख्या के लिए आजमाया है? यदि आप बड़ी संख्याओं का उपयोग करना चाहते हैं तो आपको http://gmplib.org/ लाइब्रेरी का प्रयास करना चाहिए। इस पुस्तकालय के लिए एक पायथन रैपर हैं और यह मेरे लिए ठीक काम करता है। – Elalfer
हाँ कोड छोटे नंबरों के लिए ठीक काम करता है। मैंने इसके साथ 1 और 100 के बीच की कीमतों की जांच की और यह सही था। हालांकि लिंक के लिए धन्यवाद, मैं इसे देख लूंगा। – Rell3oT
यहां चर्चा की गई इस एल्गोरिदम का उपयोग करके बड़े प्राइम प्राप्त करने के कई तरीके हैं: http://stackoverflow.com/questions/2897297/speed-up-bitstring-bit-operations-in-python –