#include // プロトタイプ宣言 int sum(int); void main() { // 使用する変数 int i, sum_1, sum_2; int num = 100000; int chk[ 100000 ]; for (i = 0; i < num; i++) { chk[i] = 0; } // num以下の友愛数を調べる for (i = 1; i <= num; i++) { // 重複マーカーが一致したらスキップ if (chk[i] == 0) { // iの自身を除いた約数の和を求める sum_1 = sum(i); // 完全数(約数の和と自身が同じ数)はスキップ if (i != sum_1) { // sum_1の自身を除いた約数の和を求める sum_2 = sum(sum_1); } } // 友愛数だったら表記 if (i == sum_2) { chk[sum_1] = sum_1; // 重複マーカーに値を代入 printf("%d:%d\n", i, sum_1); } } } // 引数の約数の和を求めて返す関数 int sum(int n) { int i, ans = 0; for (i = 1; i < n; i++) { if (n % i == 0) { ans += i; } } return ans; }