sàng nguyên tôd

Nhập giá trị n từ bàn phím

n = int(input())

Bước 1: Khởi tạo danh sách đánh dấu. Mặc định coi tất cả là số nguyên tố (True)

Danh sách có n + 1 phần tử để chứa được chỉ số từ 0 đến n

snt = [True] * (n + 1)

Bước 2: Loại bỏ số 0 và số 1 vì chúng không phải số nguyên tố

snt[0] = snt[1] = False

Bước 3: Thuật toán Sàng Eratosthenes

Chỉ cần quét đến căn bậc hai của n để tối ưu tốc độ

for i in range(2, int(n*0.5) + 1):
if snt[i]: # Nếu i là số nguyên tố
# Loại bỏ các bội số của i bắt đầu từ i
i
for j in range(i * i, n + 1, i):
snt[j] = False

Bước 4: Lọc các số còn giữ giá trị True để đưa vào kết quả

kq = []
for i in range(2, n + 1):
if snt[i]:
kq.append(i)

Bước 5: In kết quả, dùng dấu * để trải các phần tử ra

print(*kq)

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.