Ví dụ để kiểm tra một số nguyên (do người dùng nhập vào) có phải là số nguyên tố hay không bằng cách sử dụng vòng lặp for và câu lệnh if… else.
Để hiểu ví dụ này, bạn nên có kiến thức về các chủ đề lập trình C ++ sau:
- C ++ if, if… else và Nested if… else
- C ++ cho Vòng lặp
- C ++ ngắt và tiếp tục Câu lệnh
Một số nguyên dương chỉ chia hết cho 1 và chính nó được gọi là số nguyên tố.
Ví dụ: 13 là số nguyên tố vì nó chỉ chia hết cho 1 và 13 nhưng 15 không phải là số nguyên tố vì nó chia hết cho 1, 3, 5 và 15.
Lưu ý: 0 và 1 không phải là số nguyên tố.
Ví dụ: Kiểm tra số nguyên tố
#include using namespace std; int main() ( int i, n; bool isPrime = true; cout <> n; // 0 and 1 are not prime numbers if (n == 0 || n == 1) ( isPrime = false; ) else ( for (i = 2; i <= n / 2; ++i) ( if (n % i == 0) ( isPrime = false; break; ) ) ) if (isPrime) cout << n << " is a prime number"; else cout << n << " is not a prime number"; return 0; )
Đầu ra
Nhập số nguyên dương: 29 29 là số nguyên tố.
Chương trình này lấy một số nguyên dương từ người dùng và lưu trữ nó trong biến n.
Lưu ý rằng biến boolean isPrime được khởi tạo true
ở đầu chương trình.
Vì 0 và 1 không phải là số nguyên tố nên trước tiên chúng ta kiểm tra xem số đầu vào có phải là một trong những số đó hay không. Nếu số đầu vào là 0 hoặc 1 , thì giá trị của isPrime được đặt thành false
.
Ngoài ra, giá trị ban đầu của isPrime không thay đổi và for
vòng lặp được thực hiện, vòng lặp này sẽ kiểm tra xem số mà người dùng nhập vào có chia hết cho i hay không.
for (i = 2; i <= n / 2; ++i) ( if (n % i == 0) ( isPrime = false; break; ) )
Các for
vòng lặp chạy từ i == 2
đến i <= n / 2
và làm tăng giá trị của i bằng 1 với mỗi lần lặp.
Vòng lặp kết thúc tại i == n / 2
vì chúng ta không thể tìm thấy bất kỳ thừa số nào cho n ngoài số n / 2
. Vì vậy, bất kỳ lần lặp nào vượt quá n / 2
là thừa.
Nếu số do người dùng nhập hoàn toàn chia hết cho i, thì isPrime được đặt thành false
và số sẽ không phải là số nguyên tố.
Nhưng nếu số đầu vào không chia hết hoàn toàn cho i trong toàn bộ vòng lặp, thì có nghĩa là số đầu vào chỉ chia hết cho 1 và chính số đó.
Vì vậy, số đã cho là số nguyên tố.
Trong trường hợp của n == 2
, for
vòng lặp không chạy và giá trị của isPrime vẫn còn true
.