Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Số gần hoàn hảo (Almost Perfect Number) trong C++

Số gần hoàn hảo (Almost Perfect Number) là số n mà tổng tất cả ước số (kể 1 và n) bằng 2n - 1.

Ví dụ: n=16, ước: 1,2,4,8,16. Tổng = 31. 2*16-1 = 31 -> Là số gần hoàn hảo. n=12, ước: 1,2,3,4,6,12. Tổng=26, 2*12-1=23 -> Không.

Thuật toán: Tính tổng ước số, so sánh với 2n-1.

Ví dụ code

#include <iostream>
using namespace std;

void almostPerfectNumber(int n) {
    int sum = 0;
    for (int i = 1; i <= n; i++)
        if (n % i == 0) sum += i;
    if (sum == 2 * n - 1)
        cout << "YES";
    else
        cout << "NO";
}

int main() {
    int n = 16;
    cout << n << " la so gan hoan hao? ";
    almostPerfectNumber(n);
    return 0;
}

Kết quả

16 la so gan hoan hao? YES