เลขซูเปอร์เพอร์เฟกต์ (Superperfect Number) เป็นแนวคิดที่ D. Suryanarayana เสนอในปี 1969 โดยทั่วไปแล้ว จะต้องทำให้สมการ σ(σ(n)) = 2n เป็นจริง โดยที่ σ(n) คือผลรวมของตัวหารทั้งหมดของ n (รวมตัวมันเองด้วย)
ตัวอย่าง
n = 16
- σ(16) = 1 + 2 + 4 + 8 + 16 = 31
- σ(31) = 1 + 31 = 32 (เพราะ 31 เป็นจำนวนเฉพาะ)
- 2 × 16 = 32 = σ(σ(16)) → 16 เป็นซูเปอร์เพอร์เฟกต์
n = 6
- σ(6) = 1 + 2 + 3 + 6 = 12
- σ(12) = 1 + 2 + 3 + 4 + 6 + 12 = 28
- 2 × 6 = 12 ≠ 28 → 6 ไม่ใช่ซูเปอร์เพอร์เฟกต์
โค้ดตัวอย่าง
#include <stdio.h>
// ฟังก์ชนาหาผลรวมตัวหาร
int divisorSum(int n) {
int sum = 0;
for (int i = 1; i * i <= n; ++i) {
if (n % i == 0) {
if (i == n / i) sum += i;
else sum += i + n / i;
}
}
return sum;
}
int main() {
int n = 16;
int s1 = divisorSum(n);
if (2 * n == divisorSum(s1))
printf("The number %d is a superperfect number", n);
else
printf("The number %d is not a superperfect number", n);
return 0;
}
ผลลัพธ์
The number 16 is a superperfect number