Nhấn vào đây để đọc bằng ngôn ngữ khác: English
Sàng Eratosthenes là một thuật toán để tìm tất cả các số nguyên tố đến một giới hạn n
nào đó.
Thuật toán này được cho là của Eratosthenes, một nhà toán học cổ Hy Lạp.
- Tạo một mảng boolean có
n + 1
vị trí (để biểu diễn các số từ0
đếnn
) - Đặt các vị trí
0
và1
thànhfalse
, và các vị trí còn lại thànhtrue
- Bắt đầu từ vị trí
p = 2
(số nguyên tố đầu tiên) - Đánh dấu các bội số của
p
làfalse
(tức là, các vị trí2 * p
,3 * p
,4 * p
... cho đến khi bạn đạt đến cuối mảng) - Tìm vị trí đầu tiên lớn hơn
p
mà làtrue
trong mảng. Nếu không có vị trí nào như vậy, dừng lại. Nếu có, gánp
bằng số này (là số nguyên tố tiếp theo), và lặp lại từ bước 4
Khi thuật toán kết thúc, các số còn lại là true
trong mảng là tất cả các số nguyên tố nhỏ hơn n
.
Một cải tiến của thuật toán này là, ở bước 4, bắt đầu đánh dấu các bội số của p
từ p * p
, và không phải từ 2 * p
. Lý do tại sao điều này hoạt động là vì, tại thời điểm đó, các bội số nhỏ hơn của p
đã được đánh dấu false
.
Thuật toán có độ phức tạp là O(n log(log n))
.