You are on page 1of 2

Tất cả các số nguyên tố lớn hơn 1 chỉ có thể chia hết cho 1 và chính nó.

Vì vậy, để kiểm tra một số `n`  có phải là số


nguyên tố hay không, chúng ta chỉ cần kiểm tra xem có tồn tại số nào từ  `2` đến  `sqrt(n)` mà  `n` chia hết không.

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;
}

You might also like