Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Explaining this primes generator function, i cannot understand [python]
- def primes(n):
- if n==2: return [2]
- elif n<2: return []
- s=range(3,n+1,2)
- mroot = n ** 0.5
- half=(n+1)/2-1
- i=0
- m=3
- while m <= mroot:
- if s[i]:
- j=(m*m-3)/2
- s[j]=0
- while j<half:
- s[j]=0
- j+=m
- i=i+1
- m=2*i+3
- return [2]+[x for x in s if x]
- def primes(n):
- if n==2: return [2]
- elif n<2: return []
- s=range(3,n+1,2)
- mroot = n ** 0.5
- half=(n+1)/2-1
- i=0
- m=3
- while m <= mroot:
- if s[i]:
- j=(m*m-3)/2
- s[j]=0
- while j<half:
- s[j]=0
- j+=m
- i=i+1
- m=2*i+3
- return [2]+[x for x in s if x]
- >>> numbers = range(40)
- >>> numbers[1] = 0 # 1 isn't prime
- >>> for i in numbers:
- ... if i:
- ... for j in range(i + i, len(numbers), i):
- ... numbers[j] = 0
- ...
- >>> [n for n in numbers if n]
- [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37]
- [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10...]
- [0, 0, 2, 3, 4, 5, 6, 7, 8, 9, 10...]
- [0, 0, 2, 3, 0, 5, 0, 7, 0, 9, 0...]
- [0, 0, 2, 3, 0, 5, 0, 7, 0, 0, 0...]
Advertisement
Add Comment
Please, Sign In to add comment