Số hoàn hảo (Perfect Number) là số bằng tổng các ước dương của nó (không kể chính nó). Cho số n (1 ≤ n ≤ 10^8), kiểm tra n có phải số hoàn hảo không.
Trong phạm vi 10^8 chỉ có 5 số hoàn hảo: 6, 28, 496, 8128, 33550336.
Ví dụ triển khai C++
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
bool checkPerfectNumber(int num) {
static const unordered_set<int> perfect = {6, 28, 496, 8128, 33550336};
return perfect.count(num);
}
};
int main() {
Solution ob;
cout << boolalpha << ob.checkPerfectNumber(28); // true
return 0;
}
Đầu vào / Đầu ra
Input: 28 Output: true (1)