Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

Perfect Number ใน C++

แนวคิด

สมมติว่าต้องตรวจสอบว่าจำนวนที่กำหนดเป็น perfect number หรือไม่ จำนวนจะเป็น perfect number เมื่อเท่ากับผลรวมของตัวหารบวกทั้งหมดยกเว้นตัวมันเอง จำนวน n จะอยู่ในช่วง 10^8

เช่น ถ้าอินพุตคือ 28 ผลลัพธ์คือ True เพราะผลรวมตัวหาร: 1 + 2 + 4 + 7 + 14 = 28

วิธีแก้: เนื่องจากตัวเลขอยู่ในช่วง 10^8 มี perfect numbers เพียงไม่กี่ตัว หากอินพุตอยู่ในเซตนี้ คำตอบคือ true มิฉะนั้น false ตัวเลขคือ 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