Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++의 완전수


주어진 숫자가 완전수인지 아닌지 확인해야 한다고 가정해 봅시다. 숫자는 자신을 제외한 모든 양의 약수의 합과 같을 때 완전수라고 합니다. 숫자 n은 1^8 범위에 있습니다.

따라서 입력이 28과 같으면 출력은 제수 − 1 + 2 + 4 + 7+ 14 =28의 합으로 True가 됩니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

숫자가 10^8 범위에 있으므로 완전한 숫자는 거의 없습니다. 주어진 입력이 해당 집합에 있으면 대답은 참이 되고 그렇지 않으면 거짓이 됩니다. 완전한 숫자는 6, 28, 496, 8128 및 33550336입니다.

예시

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   bool checkPerfectNumber(int num) {
      set<int> set={6,28,496,8128,33550336};
      return set.find(num)!=set.end();
   }
};
main(){
   Solution ob;
   cout << (ob.checkPerfectNumber(28));
}

입력

28

출력

1