Cho số n, tạo danh sách tất cả số nguyên tố <= n theo thứ tự tăng dần. Lưu ý 1 không phải số nguyên tố.
Ví dụ, 12 -> [2, 3, 5, 7, 11].
Các bước giải quyết (sàng Eratosthenes):
sieve:= danh sách kích thướcn+1giá trịTrue.primes:= danh sách rỗng.- Với
itừ 2 đếnn:- Nếu
sieve[i]làTrue:- Thêm
ivàoprimes. - Với
jtừiđếnn, bướci:sieve[j] = False.
- Thêm
- Nếu
- Trả về
primes.
Ví dụ minh họa
class Solution:
def solve(self, n):
sieve = [True] * (n + 1)
primes = []
for i in range(2, n + 1):
if sieve[i]:
primes.append(i)
for j in range(i, n + 1, i):
sieve[j] = False
return primes
ob = Solution()
print(ob.solve(12))
Đầu vào
12
Đầu ra
[2, 3, 5, 7, 11]