前提・実現したいこと
1から10000までの間に存在する友愛数を列挙するプログラムを作りたいです。大体の形は出来てると思うのですが、思ったような実行結果が得られません。
イメージしている結果としては、「(220:284), (1184:1210), (2620:2924), (5020:5564), (6232:6368)」
という結果を得たいです。(284:220)のようなダブリの結果は得られないようにしたいです。どこを直せばよいか分からないのでアドバイスをお願い致します。
実行結果
友愛数→ (6:6), (28:28), (220:284), (284:220), (496:496), (1184:1210), (1210 :1184), (2620:2924), (2924:2620), (5020:5564), (5564:5020), (6232:6368), (6368:6232), (8128:8128),
該当のソースコード
#include<stdio.h> int main(void) { int i, j; int sum1; int cnt = 0; int k; int l; int sum2; printf("友愛数→ "); for (i = 1; i <= 10000; i++) { sum1 = 0; for (j = 1; j < i; j++) { if (i % j == 0) { sum1 += j; } } k = sum1; sum2 = 0; for (l = 1; l < k; l++) { if (k % l == 0) { sum2 += l; } } if ((i == sum2) && (k == sum1)) { printf("(%d:%d), ", i, k); cnt++; } } return 0; }
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。