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

Almost Perfect Number (จำนวนเกือบสมบูรณ์) ใน C++


บทนำ

Almost Perfect Number (หรือ Least Deficient Number) คือจำนวนที่ผลรวมตัวหารทั้งหมด (รวม 1 และตัวมันเอง) เท่ากับ 2n - 1

ตัวอย่าง

  • 16: ตัวหาร = 1,2,4,8,16 → ผลรวม = 31, 2×16-1 = 31 → YES
  • 12: ตัวหาร = 1,2,3,4,6,12 → ผลรวม = 26, 2×12-1 = 23 → NO

อัลกอริทึม

  1. คำนวณผลรวมตัวหารของ n
  2. คำนวณ val = 2n - 1
  3. ถ้า sum == val → YES, มิฉะนั้น → NO

ตัวอย่างโค้ด C++

#include <iostream>
using namespace std;

void almostPerfectNumber(int n) {
    int divisors = 0;
    for (int i = 1; i <= n; i++) {
        if (n % i == 0)
            divisors += i;
    }
    if (divisors == 2 * n - 1)
        cout << "YES";
    else
        cout << "NO";
}

int main() {
    int n = 16;
    cout << "Is " << n << " an almost perfect number?\n";
    almostPerfectNumber(n);
    return 0;
}

ผลลัพธ์

Is 16 an almost perfect number? YES