找出 2 到 60 之間的完數(因子和等於自身)和盈數(因子和大於自身)。輸出格式:E: e1 e2 ... 和 G: g1 g2 ...。
對每個數 n (2..60),計算真因子和(不含 n)。若和 == n 為完數,> n 為盈數。
#includeint 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。