บทนำ
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
อัลกอริทึม
- คำนวณผลรวมตัวหารของ n
- คำนวณ val = 2n - 1
- ถ้า 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