首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

九度 OJ 1060 完數與盈數 - 因子和分類

     編輯:關於C++

問題描述

找出 2 到 60 之間的完數(因子和等於自身)和盈數(因子和大於自身)。輸出格式:E: e1 e2 ... 和 G: g1 g2 ...。

解法:直接枚舉因子

對每個數 n (2..60),計算真因子和(不含 n)。若和 == n 為完數,> n 為盈數。

代碼實現(C)

#include 

int main() {
    int e[20] = {0}, g[20] = {0}, ec = 0, gc = 0;
    for (int n = 2; n <= 60; n++) {
        int sum = 0;
        for (int i = 1; i < n; i++) if (n % i == 0) sum += i;
        if (sum == n) e[ec++] = n;
        else if (sum > n) g[gc++] = n;
    }
    printf("E:");
    for (int i = 0; i < ec; i++) { if (i) printf(" "); printf("%d", e[i]); }
    printf("\nG:");
    for (int i = 0; i < gc; i++) { if (i) printf(" "); printf("%d", g[i]); }
    printf("\n");
    return 0;
}

結果

完數:6, 28。盈數:12, 18, 20, 24, 30, 36, 40, 42, 48, 54, 56, 60。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved