一週間で身につく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);
                }
            }
        }
    }
}