Thuật toán sàng nguyên tố Eratosthenes
| |

Sàng nguyên tố Eratosthenes cài đặt bằng C/C++, Java

Sàng nguyên tố Eratosthenes là một thuật toán giúp bạn nhanh chóng liệt kê các số nguyên tố. Đây là một thuật toán tìm số nguyên tố tối ưu khi muốn tìm tất cả các số nguyên tố nhỏ hơn một số N cho trước (N >=2). Vì đơn giản là số nguyên tố nhỏ nhất là 2 mà.

Định nghĩa số nguyên tố

Số nguyên tố là số nguyên dương có duy nhất 2 ước phân biệt là 1 và chính nó. Số nguyên tố nhỏ nhất là số 2.

Nếu bạn muốn kiểm tra một số có phải số nguyên tố hay không, hãy đọc bài thuật toán kiểm tra số nguyên tố

Nội dung trình bày:

  1. Ý tưởng của thuật toán sàng nguyên tố Eratosthenes
  2. Thuật toán
  3. Triển khai thuật toán sử dụng C/C++, Java

Ý tưởng của thuật toán sàng nguyên tố Eratosthenes

Dựa theo lý thuyết về số nguyên tố: Một số nguyên tố là số chỉ có 2 ước là 1 và chính nó. Do vậy, nếu ta xác định được số x là số nguyên tố, ta có thể kết luận mọi số chia hết cho x đều không phải số nguyên tố. Do đó ta đã loại bỏ được rất nhiều số mà không cần kiểm tra.

Ví dụ:

Số 2 là số nguyên tố => các số 4, 6, 8, 10, ... không phải số nguyên tố.

Số 3 là số nguyên tố => các số 9, 15, 21, ... không phải số nguyên tố. (Do 6, 12, 18 đã bị loại ở số 2)

Thuật toán sàng nguyên tố Eratosthenes

  1. Tạo mảng đánh dấu cho tất cả các phần tử từ 2 đến N và mặc định tất cả đều là số nguyên tố
  2. Xét số đầu tiên tìm được là số nguyên tố – giả sử x, đánh dấu tất cả các ước của x: 2x, 3x, 4x,… trong đoạn [x, N] không phải số nguyên tố.
  3. Tìm số tiếp theo được đánh dấu là số nguyên tố trong [x, N]. Nếu không còn số nào, thoát chương trình. Nếu còn, gán nó bằng x và lặp lại bước 2.
  4. Khi kết thúc giải thuật, các số không bị đánh dấu là các số nguyên tố
Mô tả thuật toán sàng nguyên tố Eratosthenes
Mô tả thuật toán sàng nguyên tố Eratosthenes

Cài đặt thuật toán sàng nguyên tố

Ngôn ngữ C/C++

Cài đặt sử dụng Java

Kết quả khi chạy:

 

Similar Posts

Subscribe
Notify of
guest
4 Bình luận
Inline Feedbacks
View all comments