C++ - Kiểm tra một số được nhập từ bàn phím có phải là số nguyên tố không

Viết một chương trình kiểm tra một số được nhập từ bàn phím có phải là số nguyên tố không

Bài giải

-------------------- ######## --------------------

Theo trang Wikipedia: Một số được gọi là số nguyên tố khi nó là số tự nhiên khác 0 mà chỉ có 2 ước đó là 1 và chính nó. Số 1 chỉ có 1 ước, nên số 1 không phải là số nguyên tố. Vậy số nguyên tố nhỏ nhất là số 2.

Cách giải bài toán trên như sau:

  • Nhập số từ bàn phím, ta gọi biến đó là so
  • Khai báo và khởi tạo biến kt = 1, biến kt là cờ, đánh dấu so có phải là số nguyên tố hay không, nếu kt = 0 thì so không phải là số nguyên tố, nếu kt = 1 thì so là số nguyên tố
  • Sử dụng vòng lặp while lặp từ 2 đến so/2, cấu trúc vòng lặp while có dạng while (i <= so/2)
  • Trong mỗi vòng lặp thứ i kiểm tra so có chia hết cho i không, nếu If(so % i == 0) thì gán biến kt bằng 0
  • Ra khỏi vòng lặp kiểm tra nếu biến kt bằng 1 thì so là số nguyên tố, ngược lại so không phải là số nguyên tố

Chúng sẽ giải bài toán trên bằng cách sử dụng vòng lặp while trong C++ như sau:

#include <cmath>
#include <iostream>
using namespace std;

int main() {
    int i = 2, so, kt = 1;

    cout << "Nhap so: ";
    cin >> so;

    if (so != 0 && so != 1) {
        while(i <= so/2) {
            if(so%i == 0) {
                kt = 0;
                break;
            }
            i++;
        }
    } else {
       kt = 0;
    }
    
    if(kt == 1) {
        cout << so << " la so nguyen to" << endl;
    } else {
        cout << so << " khong phai la so nguyen to" << endl;
    }

    return 0;
}

Và kết quả sau khi thực thi chương trình trên như sau:

Khi nhập số là 0:

Khi nhập số là 1:

Khi nhập số là 6:

Khi nhập số là 7:

Nguồn: freetuts.net