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

เลขซูเปอร์เพอร์เฟกต์ (Superperfect Number) ในภาษา C

เลขซูเปอร์เพอร์เฟกต์ (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