一週間で身につくC# の勉強中16
prob8-14
異なる2つの自然数で、自分自身を除いた約数の和が、互いに他方と等しくなるような数をいう。例えば、220の自分自身を除いた約数は、1,2,4,5,10,11,20,22,44,55,110で、和は284となる。一方、284の自分自身を除いた約数は、1,2,4,71,142で、和は220である。よって、220と284の組み合わせは友愛数という。10000以下の友愛数をすべて求めなさい。
考え方のポイント
- 約数を求めてそれの合計を出し、その合計の約数を求めそれも合計(goukei2)を出す。そのgoukei2が初めの数と同じだと書き出す。
- 答えは5組でした。220と284,1184と1210,2620と2924,5020と5564,6232と6368
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _prob8_14 { class Program { static void Main(string[] args) { for(int i = 1; i < 10001; i++) //1から1万までの数字を順に { int goukei = 0; int goukei2 = 0; for(int j = 1; j < i; j++) //約数を求める、1からiまでの数字で割る { if (i % j == 0 && i!=j) //自分自身の数を除く { goukei = goukei + j; } } for(int k = 1; k < goukei; k++) //合計の数の約数を求める { if (goukei % k == 0 && goukei != k) { goukei2 = goukei2 + k; } } if (i == goukei2 && i<goukei) //同じ組あわせが現れないように { Console.WriteLine("{0}と{1}", i, goukei); } } } } }