Chào mừng các bạn đến với mục Algorithm của DNHWiki.
Hôm nay mình sẽ giới thiệu với các bạn một số thuật toán liên quan đến kiểm tra nguyên tố của một số nguyên dương.
# Khởi đầu
Trong tập đề code cơ bản của bạn, kiểu gì cũng phải có bài kiểm tra nguyên tố.
Có một sự thật là khá nhiều bạn không biết phải làm thế nào với bài toán kiểm tra nguyên tố. Ta sẽ giải quyết bài toán này như thế nào?
# Thuật toán
## Một số tính chất nhỏ
- Nhắc lại về số nguyên tố: số nguyên tố là **số chỉ có 2 ước là 1 và chính nó**.
- Những số nào có nhiều hơn 2 ước là hợp số, tức là không phải số nguyên tố
- 0 và 1 không phải số nguyên tố và cũng không phải hợp số (hiển nhiên).
- Số nào cũng chia hết cho 1, cho nên kiểm tra tính chia hết với 1 là vô nghĩa.
- Số nào cũng chia hết cho chính nó, cho nên kiểm tra tính chia hết với chính nó cũng là vô nghĩa nốt.
Do vậy, khi ta nhắc đến 1 số `n` bất kì, ta đều biết nó đã có 2 ước dễ nhận thấy là 1 và chính nó. Khi ta kiểm tra nguyên tố, ta sẽ kiểm tra xem có số nào **khác 1 và chính nó** mà `n` chia hết hay không. Nếu nó chia hết cho 1 số nào đó (khác 1 và chính nó), ta kết luận nó không phải số nguyên tố.
Đến đây, bạn sẽ kêu "ôi, dễ ẹc, cho kiểm tra các số từ 2 đến n-1 là biết ngay ấy mà".
Việc kiểm tra từ 2 đến n-1 có vẻ ổn thoả, nhưng nó hơi thừa. Bạn có thấy rằng:
```
- Nếu n chia hết cho k thì n cũng chia hết cho (n/k) (hiển nhiên).
This file has been truncated. show original