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