Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Số siêu hoàn hảo (Superperfect Number) trong C

Số siêu hoàn hảo được D. Suryanarayana khám phá năm 1969. Số n là siêu hoàn hảo nếu thỏa mãn: σ(σ(n)) = 2n, trong đó σ(n) là tổng các ước số của n.

Ví dụ: n = 16

  • σ(16) = 1 + 2 + 4 + 8 + 16 = 31
  • σ(31) = 1 + 31 = 32
  • 2 × 16 = 32 = σ(σ(16)) → 16 là số siêu hoàn hảo

Counter-example: n = 6

  • σ(6) = 1 + 2 + 3 + 6 = 12
  • σ(12) = 1 + 2 + 3 + 4 + 6 + 12 = 28
  • 2 × 6 = 12 ≠ 28 → 6 không phải số siêu hoàn hảo

Chương trình kiểm tra

#include <stdio.h>

// Tính tổng ước số
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 n1 = divisorSum(n);
    
    if (2 * n == divisorSum(n1))
        printf("So %d la so sieu hoan hao", n);
    else
        printf("So %d khong phai so sieu hoan hao", n);
    
    return 0;
}

Kết quả

So 16 la so sieu hoan hao