मैं प्राइम नंबर जेनरेट करने के लिए एल्गोरिदम खोज रहा था। मुझे रॉबर्ट विलियम हैंक्स द्वारा निम्नलिखित किया गया। यह अन्य एल्गोरिदम की तुलना में बहुत ही कुशल और बेहतर है लेकिन मैं इसके पीछे गणित को समझ नहीं पा रहा हूं।प्राइम नंबर जनरेटर स्पष्टीकरण?
def primes(n):
""" Returns a list of primes < n """
lis = [True] * n
for i in range(3,int(n**0.5)+1,2):
if lis[i]:
lis[i*i::2*i]=[False]*int((n-i*i-1)/(2*i)+1)
return [2] + [i for i in range(3,n,2) if lis[i]]
True
रों मूल्यों की सरणी और अंतिम रूढ़ अंक सरणी के बीच संबंध क्या है?
ऐसा लगता है कि यह एराटोस्टेनेस की चलनी का उपयोग कर रहा है। – ForceBru
[इस उत्तर] से यह कोड (http://stackoverflow.com/questions/2068372/fastest-way-to-list-all-primes-below-n-in-python/3035188#3035188) मूल रूप से थोड़ा अनुकूलित है Eratosthenes की चाकू। ध्यान दें कि यह पायथन 2 कोड है, इसे पायथन 3 पर उपयोग के लिए कुछ बदलावों की आवश्यकता है। FWIW, मेरे पास [इस उत्तर] में RWH के कोड का एक पायथन 3 संस्करण है (http://stackoverflow.com/a/38743446/4014959) । –
'n = 6' के साथ इसके माध्यम से चलें,' lis' 'के मान को लिखें (' पेपर पर) और 'i' जैसा कि आप लूप के माध्यम से जाते हैं। –