Guest User

generate-prime-bitmap.py

a guest
Aug 2nd, 2025
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.85 KB | Source Code | 0 0
  1. from math import ceil, isqrt
  2.  
  3. MAX_PRIME = 94906249
  4. # MAX_PRIME = 4294967291
  5. BITMAP_SIZE = ceil((MAX_PRIME - 1) / 24)
  6. bitmap = bytearray(BITMAP_SIZE)
  7. MAX_NUMBER = 24 * BITMAP_SIZE + 1
  8.  
  9. limit = isqrt(MAX_NUMBER)
  10. if limit % 6 not in {1, 5}:
  11.     limit -= limit % 6 - 1 if limit % 6 else 1
  12.  
  13. i_bound = limit // 3
  14. j_bound = MAX_NUMBER // 3
  15. masks = tuple(0b1000_0000 >> i for i in range(8))
  16.  
  17. for i in range(i_bound):
  18.     if not (bitmap[i >> 3] & masks[i & 7]):
  19.         prime = 3 * i + 5 - (i & 1)
  20.         j1 = (prime * prime) // 3 - 1
  21.         j2 = j1 + (prime << (1 + (i & 1))) // 3
  22.         step = prime << 1
  23.  
  24.         for j in range(j1, j_bound, step):
  25.             bitmap[j >> 3] |= masks[j & 7]
  26.  
  27.         for j in range(j2, j_bound, step):
  28.             bitmap[j >> 3] |= masks[j & 7]
  29.  
  30. with open('prime-bitmap.bin', 'wb') as f:
  31.     f.write(bitmap)
  32.  
Advertisement
Add Comment
Please, Sign In to add comment