首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C 語言完全數查找:判斷單個 & 範圍內所有完全數

     編輯:程式設計綜合問答

定義

完全數 = 所有真因子(不含自身)之和等於自身。如 6=1+2+3, 28=1+2+4+7+14。

完整代碼


#include 
int main() {
    int n, N, i, j, sum;
    // 1. 判斷單個數
    printf("輸入整數 n,判斷是否完全數:\n");
    scanf("%d", &n);
    sum = 0;
    for (i = 1; i < n; i++) if (n % i == 0) sum += i;
    if (sum == n) printf("%d 是完全數\n", n); else printf("%d 不是完全數\n", n);

    // 2. 輸出 1~N 所有完全數
    printf("輸入整數 N,輸出 1~%d 所有完全數:\n", N);
    scanf("%d", &N);
    printf("完全數列表:\n");
    for (i = 2; i <= N; i++) { // 從 2 開始,1 無真因子
        sum = 0;
        for (j = 1; j < i; j++) if (i % j == 0) sum += j;
        if (sum == i) printf("%d\n", i);
    }
    return 0;
}

優化提示

  • 因子成對出現:只需遍歷到 sqrt(i),成對累加,複雜度從 O(N²) 降為 O(N√N)。
  • 已知完全數極少(10000 內僅 6, 28, 496, 8128),大範圍可查表。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved