Sàng Eratosthenes là một thuật toán tìm tất cả số nguyên tố trong phạm vi n
. Nó được cho là của Eratosthenes ở Cyrene, một nhà toán học Hy Lạp cổ đại.
- Tạo một mảng boolean gồm
n + 1
vị trí (để biểu diễn các số từ0
đếnn
). - Mặc định vị trí
0
và1
làfalse
, phần còn lại làtrue
. - Bắt đầu ở vị trí
p = 2
(số nguyên tố đầu tiên). - Đánh dấu là
false
tất cả các bội số củap
(nghĩa là các vị trí2 * p
,3 * p
,4 * p
... cho đến khi tới cuối mảng). - Tìm vị trí đầu tiên lớn hơn
p
làtrue
trong mảng. Nếu không có vị trí đó, hãy dừng lại. Nếu không, hãy đặtp
bằng số mới (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
là các số nguyên tố trong phạm vi 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 bội số
của p
từ p * p
, chứ 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 đó, bội số nhỏ hơn của p
sẽ được đánh dấu là false
.
Độ phức tạp của thuật toán là O(n log(log n))
.