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

Số Betrothed (Betrothed Numbers) trong C

Giới thiệu

Số Betrothed là cặp số (a, b) thỏa mãn: tổng các ước số thực sự (aliquot sum) của a bằng b+1, và ngược lại.

Điều kiện: σ(a) = σ(b) = a + b + 1, trong đó σ(n) là tổng tất cả ước số của n.

Các cặp đầu tiên

(48, 75), (140, 195), (1050, 1925), (1575, 1648), (2024, 2295), (5775, 6128)

Tất cả cặp đã biết có chẵn lẻ khác nhau. Cặp cùng chẵn/lẻ phải > 10¹⁰.

Thuật toán

1. Tính tổng ước số thực sự của a (gọi sum_a)
2. Tính tổng ước số thực sự của b (gọi sum_b)
3. Nếu sum_a == b+1 VÀ sum_b == a+1 → Là Betrothed

Ví dụ

a = 48: ước thực sự = 1,2,3,4,6,8,12,16,24 → tổng = 76 = 75+1 ✓
b = 75: ước thực sự = 1,3,5,15,25 → tổng = 49 = 48+1 ✓
→ (48, 75) là Betrothed

Code C

#include <stdio.h>

int sum_proper_divisors(int n) {
    int sum = 0;
    for (int i = 1; i < n; i++)
        if (n % i == 0) sum += i;
    return sum;
}

int main() {
    int a = 48, b = 75;
    int sum_a = sum_proper_divisors(a);
    int sum_b = sum_proper_divisors(b);

    if (sum_a == b + 1 && sum_b == a + 1)
        printf("%d and %d are Betrothed numbers\n", a, b);
    else
        printf("%d and %d are NOT Betrothed numbers\n", a, b);
    return 0;
}

Kết quả

48 and 75 are Betrothed numbers

Lưu ý

Code gốc in sai "are not Betrothed" do lỗi logic điều kiện. Đã sửa trong phiên bản trên.