백준

백준 2581번 c#

대왕군 2024. 1. 31. 15:52

 

using System;

namespace Baekjoon
{
    internal class Program
    {
        static void Main(string[] args)
        {
            //그냥 콘솔창 예쁘게 꾸미는 코드(심심해서 넣음)
            Console.BackgroundColor = ConsoleColor.DarkCyan;

            //시작숫자와 끝숫자 저장
            int startNum = int.Parse(Console.ReadLine());
            int endNum = int.Parse(Console.ReadLine());

            //소수의 모든 합과 소수의 최솟값을 나타낼 변수
            int sum = 0;
            //일단 minNum은 -1로 해둠
            int minNum = -1;

            //시작값부터 끝값까지 반복함
            for (int i = startNum; i <= endNum; i++)
            {
                //1은 소수가 아니므로 만약 i가 1이라면 이번 반복문 그냥 넘김
                if (i == 1)
                {
                    continue;
                }

                //일단 i가 소수라고 가정하고 sum에 i를 더해줌
                sum += i;

                //어차피 1로 다 나눠지니까 2부터 시작하여 반복
                for (int k = 2; k <= i; k++)
                {
                    //i가 본인 이외의 숫자로 나누어진다면 실행
                    if (i % k == 0 && k != i)
                    {
                        //소수가 아닌 것이 밝혀졌으니 sum에서 다시 i 빼줌
                        sum -= i;
                        //반복문 탈출
                        break;
                    }
                    //만약 i가 1과 자기자신으로만 나누어지는 소수라면 실행
                    else if (i % k == 0 && k == i)
                    {
                        //만약 minNum이 초기값 -1을 가지고 있다면 실행
                        if (minNum == -1)
                        {
                            //minNum에 바로 i 대입
                            minNum = i;
                        }
                        //만약 minNum보다 이번 i가 더 작다면 실행
                        else if (minNum > i)
                        {
                            //minNum에 i 대입
                            minNum = i;
                        }
                    }
                }
            }

            //minNum이 -1이 아닌경우(즉 소수가 하나라도 존재했을 때 실행)
            if (minNum != -1)
            {
                //소수들의 합과 소수 최솟값 출력
                Console.WriteLine(sum);
                Console.WriteLine(minNum);
            }
            //-1 출력
            else
            {
                Console.WriteLine(minNum);
            }

        }

    }
}