Hướng dẫn giải của Sàng Phân Đoạn


Chỉ dùng lời giải này khi không có ý tưởng, và đừng copy-paste code từ lời giải này. Hãy tôn trọng người ra đề và người viết lời giải.
Nộp một lời giải chính thức trước khi tự giải là một hành động có thể bị ban.

Tác giả: admin

Lời giải

Không thể sàng tới ~10^{12}~, nhưng độ dài đoạn chỉ tối đa ~10^6~ nên có thể sàng trên đoạn:

  • Mọi hợp số ~m \le R~ đều có một ước nguyên tố không vượt quá ~\sqrt{R} \le 10^6~. Hãy sàng trước các số nguyên tố đến ~\sqrt{R}~.
  • Với mỗi số nguyên tố ~p~ tìm được, đánh dấu các bội của ~p~ trong đoạn ~[L, R]~, bắt đầu từ bội nhỏ nhất không nhỏ hơn ~\max(p^2, L)~.
  • Những vị trí còn lại chính là số nguyên tố.

Hãy chú ý hai điểm: ~p^2~ có thể vượt quá phạm vi 32 bit, và ~1~ không phải số nguyên tố nên phải loại riêng khi ~L = 1~.


Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.