สมมติว่าเราต้องตรวจสอบว่าตัวเลขที่กำหนดเป็นตัวเลขที่สมบูรณ์แบบหรือไม่ จำนวนหนึ่งเรียกว่าจำนวนสมบูรณ์เมื่อจำนวนนั้นเท่ากับผลรวมของตัวหารบวกทั้งหมดยกเว้นตัวมันเอง หมายเลข n จะอยู่ในช่วง 1^8
ดังนั้น หากอินพุตเท่ากับ 28 เอาต์พุตจะเป็น True เนื่องจากผลรวมของตัวหาร − 1 + 2 + 4 + 7+ 14 =28
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
เนื่องจากตัวเลขอยู่ในช่วง 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