using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//알고리즘_완전수: 자신을 제외한 약수의 합이 자신과 같은 수
// 6= 1+2+3
//1부터 10000까지의 완전수와 개수를 출력
namespace Project2
{
    internal class Algorithm_PerfectNumber
    {
        static void Main()
        {
            int sum = 0; //약수의 합계
            int cnt = 0;//완전수의 개수
            int max = 0; //가장 큰 약수
            int rem = 0; //나머지값 임시 보관

            for(int i = 1; i <= 10000; i++)
            {
               sum = 0; //매 반복마다 0으로 초기화 
               max = i/2; //모든 짝수를 2로 나누면 가장 큰 약수를 구할 수 있다.
               for(int j=1; j<=max; j++)
                {
                    rem = i-(i/j)*j; //자신 % 약수
                    if (rem == 0)
                    {
                        sum += j; //약수의 합계
                    }
                }
                if (i == sum) //자신== 약수의 합계 => 완전 수
                {
                    Console.WriteLine("완전수:{0}", i);
                    cnt++;
                }
            }

            Console.WriteLine("완전 수 개수:{0}", cnt);
        }
    }
}