mfgnik

Untitled

Jun 12th, 2020
1,048
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.94 KB | None | 0 0
  1. import bisect
  2.  
  3.  
  4. def num_prime(n):
  5.     sup = n + 1
  6.     prime_list = []
  7.     prime = [True] * sup
  8.     prime[0] = prime[1] = False
  9.     count = 2
  10.     for i in range(2, sup):
  11.         if count == sup:
  12.             break
  13.         if not prime[i]:
  14.             continue
  15.         prime_list.append(i)
  16.         count += 1
  17.         for j in range(i * i, sup, i):
  18.             if prime[j]:
  19.                 prime[j] = False
  20.                 count += 1
  21.     return prime_list
  22.  
  23.  
  24. A, B = map(int, input().split())
  25.  
  26. primes = num_prime(B)
  27.  
  28. super_prime = set()
  29.  
  30. for index_first in range(bisect.bisect_left(primes, A - primes[-1]), bisect.bisect_left(primes, B // 2 + 1)):
  31.     for index_second in range(max(index_first, bisect.bisect_left(primes, A - primes[index_first])), len(primes)):
  32.         number = primes[index_first] + primes[index_second]
  33.         if number > B:
  34.             break
  35.         super_prime.add(number)
  36.  
  37. print(*sorted(super_prime), sep='\n')
Advertisement
Add Comment
Please, Sign In to add comment