Bài tập

Thuật toán kiểm tra số hoàn hảo trong C++

Huy Erick

Mở đầu hấp dẫn Bạn đã bao giờ nghe về khái niệm "số hoàn hảo" chưa? Trong bài viết này, chúng ta sẽ khám phá khái niệm này và tìm hiểu về thuật toán kiểm...

Mở đầu hấp dẫn

Bạn đã bao giờ nghe về khái niệm "số hoàn hảo" chưa? Trong bài viết này, chúng ta sẽ khám phá khái niệm này và tìm hiểu về thuật toán kiểm tra số hoàn hảo trong ngôn ngữ lập trình C++. Hãy cùng nhau khám phá nhé.

Số hoàn hảo là gì?

Trong lịch sử, các nhà toán học Hy Lạp đã đưa ra khái niệm số hoàn hảo. Số hoàn hảo là số mà tổng các ước số của nó bằng chính nó. Ví dụ, số 6 là một số hoàn hảo vì tổng các ước số của nó (1 + 2 + 3) bằng chính nó.

Ngược lại, số 12 không phải là số hoàn hảo vì tổng các ước số của nó lớn hơn nó.

Có một công thức được đưa ra bởi nhà toán học EuClid cho các số "hoàn hảo" là các số chẵn. Ví dụ về các số hoàn hảo đầu tiên là 6, 28, 496 và 8128.

Tuy nhiên, cho đến nay vẫn chưa có nghiên cứu nào cho thấy số hoàn hảo có thể là số lẻ và có bao nhiêu số hoàn hảo tồn tại.

Thuật toán kiểm tra số hoàn hảo C++

Để kiểm tra xem một số có phải là số hoàn hảo hay không, chúng ta có thể áp dụng thuật toán sau:

  1. Tìm tất cả các ước số của số cần kiểm tra.
  2. Tính tổng các ước số đã tìm.
  3. So sánh tổng với số cần kiểm tra.
  4. Nếu tổng bằng số cần kiểm tra, thì số đó là số hoàn hảo. Ngược lại, nó không phải là số hoàn hảo.

Lưu ý: Các ước số của một số luôn nhỏ hơn hoặc bằng một nửa của số đó.

Dưới đây là một đoạn code minh họa cho thuật toán trên:

#include 
using namespace std;

bool kiemTraSoHoanHao(int a) {
    int sum = 0;
    for (int i = 1; i = a/2; i++) {
        if (a % i == 0) {
            sum += i;
        }
    }
    if (sum == a) {
        return true;
    }
    else {
        return false;
    }
}

int main() {
    int n;
    cout  "Nhap so can kiem tra: ";
    cin >> n;
    if (kiemTraSoHoanHao(n)) {
        cout  n  " la so hoan hao."  endl;
    }
    else {
        cout  n  " khong phai la so hoan hao."  endl;
    }
    return 0;
}

Kết quả:

Kết quả 1: Số được kiểm tra là số hoàn hảo.

So sánh với ví dụ trong hình dưới đây:

Kết quả 2: Số được kiểm tra không phải là số hoàn hảo.

Như vậy, chúng ta đã tìm hiểu về thuật toán kiểm tra số hoàn hảo trong ngôn ngữ C++. Bạn có thể áp dụng cách khác nhau để thực hiện chương trình. Hãy tạo cho mình một logic riêng, đó cũng là cách tốt để bạn nắm vững kiến thức này. Chúc bạn thành công!

1