Một số nguyên là số chẵn nếu nó chia hết cho hai và là số lẻ nếu nó không chia hết cho hai. Các số chẵn như -4, -2, 0, 2, 4, 6, 8, 10,… Các số lẻ như -3, -1, 1, 3, 5, 7, 9, 11,…
Lưu ý: Tính chẵn lẻ không áp dụng cho các số không phải là số nguyên.
Một số nguyên được biểu thị trong hệ thập phân là chẵn hoặc lẻ tùy theo chữ số cuối cùng của nó là chẵn hay lẻ. Nếu chữ số cuối cùng là 1, 3, 5, 7 hoặc 9 thì số đó là số lẻ. Nếu chữ số cuối cùng là 0, 2, 4, 6 hoặc 8 thì số đó là số chẵn.
Còn một số được biểu thị trong hệ nhị phân là số lẻ nếu chữ số cuối cùng của nó là 1 và là số chẵn khi chữ số cuối cùng của nó là 0.
1. Sử dụng toán tử chia lấy dư % (modulus operator)
Để kiểm tra số nguyên N là số chẵn hay lẻ trong C++, ta có thể sử dụng toán tử chia lấy dư %
. Toán tử này sẽ trả về phần dư của phép chia giữa hai số. Nếu phần dư bằng 0 thì số bị chia hết cho số chia.
Chúng ta có thể kiểm tra một số nguyên N là số chẵn hay lẻ bằng cách kiểm tra phần dư của phép chia N cho 2. Nếu phần dư bằng 0 thì số đó là số chẵn. Ngược lại, nếu phần dư khác 0 thì số đó là số lẻ.
Đoạn code sau minh họa cách kiểm tra số nguyên N là số chẵn hay lẻ trong C++:
#include <iostream>
using namespace std;
int main() {
int N;
cout << "Nhap so N: ";
cin >> N;
// kiem tra so chan le
if (N % 2 == 0) {
cout << N << " la so chan" << endl;
} else {
cout << N << " la so le" << endl;
}
return 0;
}
Trong đoạn code trên, ta nhập số N từ bàn phím. Sau đó, kiểm tra xem N có chia hết cho 2 không. Nếu N chia hết cho 2 (dư 0), thì ta xuất ra thông báo “N là số chẵn”. Ngược lại, ta xuất ra thông báo “N là số lẻ”.
Trong chương trình trên, chúng ta có thể sử dụng toán tử điều kiện (conditional operator hoặc ternary operator) thay vì câu lệnh if...else
. Toán tử điều kiện là cách viết ngắn gọn của câu lệnh if...else
.
#include <iostream>
using namespace std;
int main() {
int N;
cout << "Nhap so N: ";
cin >> N;
// kiem tra so chan le
(N % 2 == 0) ? cout << N << " la so chan" : cout << N << " la so le";
return 0;
}
Một số nguyên được biểu thị trong hệ thập phân là chẵn hoặc lẻ tùy theo chữ số cuối cùng của nó là chẵn hay lẻ. Nếu chữ số cuối cùng là 1, 3, 5, 7 hoặc 9 thì số đó là số lẻ. Nếu chữ số cuối cùng là 0, 2, 4, 6 hoặc 8 thì số đó là số chẵn.
Với nhận xét trên, thay vì chia số nguyên N cho 2 thì chúng ta có thể chia cho 10 để lấy phần dư là chữ số cuối cùng của số nguyên. Từ đó, xác định số nguyên N là số chẵn hay lẻ.
#include <iostream>
using namespace std;
int main() {
int N;
cout << "Nhap so N: ";
cin >> N;
// kiem tra so chan le
if (N%10==0 || N%10==2 || N%10==4 || N%10==6 || N%10==8) {
cout << N << " la so chan" << endl;
} else {
cout << N << " la so le" << endl;
}
return 0;
}
2. Sử dụng toán tử trên bit (bitwise operator)
Một giải pháp tốt hơn là sử dụng toán tử trên bit. Chúng ta cần kiểm tra xem bit cuối cùng có phải là 1 hay không. Nếu bit cuối cùng là 1 thì số đó là số lẻ, ngược lại số đó là số chẵn.
Chúng ta có thể sử dụng toán tử AND trên bit giữa số nguyên N và 1. Nếu đầu ra thu được là 0, thì số đó là số chẵn. Nếu đầu ra thu được là 1, thì số đó là số lẻ. Ví dụ:
Input: 5 //số lẻ
00000101
& 00000001
--------------
00000001
--------------
Input: 8 //số chẵn
00001000
& 00000001
--------------
00000000
--------------
Chương trình C++ để kiểm tra số nguyên N là số chẵn hay lẻ bằng cách sử dụng toán tử AND trên bit như sau:
#include <iostream>
using namespace std;
int main() {
int N;
cout << "Nhap so N: ";
cin >> N;
// kiem tra so chan le
if ((N & 1) == 0) {
cout << N << " la so chan" << endl;
} else {
cout << N << " la so le" << endl;
}
return 0;
}