Advertisement
Guest User

Untitled

a guest
Oct 26th, 2020
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.70 KB | None | 0 0
  1. from math import sqrt
  2. def sieve_of_eratosthenes(primes, from_n, to_n):
  3. length = to_n - from_n
  4. arr = [True]*length + [False]
  5. for p in primes:
  6. for i in range((to_n - 1 - (from_n-1)//p*p)//p):
  7. b = -from_n % p
  8. arr[b + p*i] = False
  9. for i in range(int(sqrt(to_n)) + 1 - from_n):
  10. if arr[i]:
  11. p = from_n + i
  12. for j in range(1, (to_n - 1 - (from_n-1)//p*p)//p):
  13. b = -from_n % p
  14. arr[b + p*j] = False
  15. for i in range(to_n - from_n + 1):
  16. if arr[i]:
  17. primes.append(from_n + i)
  18. return primes
  19.  
  20. class Primes:
  21. def stream():
  22. counter1 = 0
  23. counter2 = 1
  24. primes = sieve_of_eratosthenes([2], 3, 100000)
  25. length = len(primes)
  26. while True:
  27. print(primes[counter1])
  28. yield primes[counter1]
  29. if counter1 + 1 == length:
  30. primes = sieve_of_eratosthenes(primes, counter2*100000, (counter2+1)*100000) # 100000 - размер сегмента решета
  31. length = len(primes)
  32. counter2 += 1
  33. if counter2 == 4: # 4 - количество сегментов
  34. n = primes[-1] + 2
  35. break
  36. counter1 += 1
  37. """
  38. while True:
  39. is_primal = True
  40. for p in primes:
  41. if p > sqrt(n):
  42. break
  43. if n % p == 0:
  44. is_primal == False
  45. if is_primal:
  46. print(n)
  47. yield n
  48. n += 2
  49. """
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement