fork download
  1. import math
  2.  
  3.  
  4. def search(n1, n2):
  5. sieve = [(1, n) for n in range(n1, n2)]
  6. i = 2
  7. n2_sqrt = math.isqrt(n2)
  8. while i <= n2_sqrt:
  9. for k in range((i - n1) % i, n2 - n1, i):
  10. d, n = sieve[k]
  11. if d != 0 and n % i == 0:
  12. n //= i
  13. e = 1
  14. while n % i == 0:
  15. n //= i
  16. e += 1
  17. if e % 2 == 0:
  18. sieve[k] = d * (e + 1), n
  19. else:
  20. sieve[k] = 0, 0
  21. i += 1 if i == 2 else 2
  22. for n, (d, j) in enumerate(sieve, start=n1):
  23. if d != 0 and j == 1:
  24. yield n, d
  25.  
  26.  
  27. def main():
  28. base = 1_850_000_000
  29. m = 0
  30. k = base // 2
  31. step = 25000
  32. while True:
  33. for n, d in search(k, k + step):
  34. print(2 * (n - base // 2), d)
  35. m += 1
  36. if m >= 5:
  37. return
  38. k += step
  39.  
  40.  
  41. main()
  42.  
Success #stdin #stdout 0.42s 12016KB
stdin
Standard input is empty
stdout
22792 81
144450 81
266112 27
387778 9
509448 27