Professional Documents
Culture Documents
KT So NT
KT So NT
Trong ví dụ của bạn, khi bạn nhập `n = 7` , chương trình sẽ thực hiện vòng lặp từ `i = 2` đến `sqrt(7)`, tức
là `i` sẽ chạy từ `2` đến `2`. Vì không tồn tại số `i` nào từ `2` đến `2` mà `7` chia hết, biến `isPrime` vẫn giữ giá
trị là `true` .
Sau khi kết thúc vòng lặp, chương trình kiểm tra giá trị của biến `isPrime`. Vì `isPrime` là `true`, chương trình xuất
ra thông báo là `7 là số nguyên tố` . Điều này đúng vì `7` chỉ chia hết cho `1` và `7` (không chia hết cho bất kỳ số
nào khác).
Trong ví dụ của chúng ta, chúng ta muốn kiểm tra xem số `n` có phải là số nguyên tố hay không. Chúng ta sẽ sử dụng
một biến đánh dấu ( `isPrime`) để giúp chúng ta theo dõi xem có tồn tại số nào từ `2` đến `sqrt(n)` mà `n` chia
hết hay không.
Khi bạn nhập `n = 7` , chương trình sẽ bắt đầu vòng lặp từ `i = 2` đến `sqrt(7)`. Trong lần lặp đầu tiên, `i` sẽ có
giá trị là `2`. Chúng ta kiểm tra xem `7` có chia hết cho `2` không bằng cách kiểm tra `n % i == 0` . Vì `7 %
2` không bằng `0`, điều này có nghĩa là `7` không chia hết cho `2` . Tiếp theo, chúng ta tăng giá trị
của `i` lên `1` và điều này sẽ làm chúng ta lặp lại quá trình kiểm tra với `i = 3`. Tương tự, vì `7 % 3` cũng không
bằng `0`, nghĩa là `7` không chia hết cho `3`, chúng ta tiếp tục tăng giá trị của `i` lên `1` .
Bây giờ, chúng ta đã kiểm tra tất cả các số từ `2` đến `sqrt(7)` và không tìm thấy bất kỳ số nào mà `7` chia hết. Vì
vậy, biến `isPrime` vẫn giữ giá trị là `true`. Chương trình tiếp tục bằng việc kiểm tra giá trị của `isPrime`.
Vì `isPrime` là `true`, chương trình xuất ra thông báo là `7 là số nguyên tố` .
Tóm lại, biến đánh dấu ( `isPrime`) được sử dụng trong vòng lặp để xác định xem số `n` có chia hết cho bất kỳ số
nguyên `i` nào từ `2` đến `sqrt(n)` hay không. Nếu không tìm thấy bất kỳ số nào mà `n` chia hết, biến đánh dấu
sẽ vẫn là `true` và chúng ta biết rằng `n` là số nguyên tố.
Nếu biến `is_prime` có giá trị `true`, điều này có nghĩa là chúng ta đã kiểm tra và xác nhận rằng số `n` là số
nguyên tố. Lúc này, chương trình sẽ thực hiện lệnh trong khối `if` , và biểu thức xuất ra sẽ là: `"So " << n << " la
so nguyen to."` . Trong đó, `<<` là toán tử nhập xuất trong C++, dùng để nối các giá trị lại với nhau. Ví dụ,
nếu `n` là 7, lệnh `"So " << n << " la so nguyen to."` sẽ xuất ra `"So 7 la so nguyen to."` .
Ngược lại, nếu biến `is_prime` có giá trị `false`, điều này có nghĩa là số `n` không phải là số nguyên tố. Lúc này,
chương trình sẽ thực hiện lệnh trong khối `else`, và biểu thức xuất ra sẽ là: `"So " << n << " khong phai so
nguyen to."` . Tương tự như trên, nếu `n` là 7, lệnh `"So " << n << " khong phai so nguyen to."` sẽ xuất
ra `"So 7 khong phai so nguyen to."` .
#include<iostream>
#include<cmath>
using namespace std;
int main(){
int n;
bool is_prime = true;
cout << "N = "; cin >> n;
if (n <= 1 ){
cout << "So " << n << " khong phai so nguyen to"<<endl;
return 0;
}
for(int i = 2; i<= sqrt(n); i++){
if(n%i==0){
is_prime = false;
break;
}
}
if (is_prime) {
cout << "So " << n << " la so nguyen to."<<endl;
} else {
cout << "So " << n << " khong phai so nguyen to"<<endl;
}
return 0;
}