백준문제풀이 9단계 약수,배수와 소수(5) 2581번 소수 (C#)

2024. 6. 23. 20:00백준 문제풀이/9단계 약수,배수와 소수

 

자연수의 범위 M N을 받고

M ~ N사이에 소수들의 합과 최소값을 출력하는 문제

소수가 없다면 -1을 출력하자!

 

using System;
class BackJoon
{
    static void Main(string[] args)
    {
        int M = int.Parse(Console.ReadLine());
        int N = int.Parse(Console.ReadLine());
        int count = 0;
        int minV = int.MaxValue;
        for (int i = M; i <= N; i++)
        {
            if (IsPrime(i))
            {
                count += i;
                if (i < minV)
                    minV = i;
            }
        }
        if (count == 0)
            Console.WriteLine(-1);
        else
        {
            Console.WriteLine(count);
            Console.WriteLine(minV);
        }
    }
    static bool IsPrime(int number)
    {
        if (number < 2)
            return false;
        if (number == 2)
            return true;
        if (number % 2 == 0)
            return false;
        for (int i = 3; i <= Math.Sqrt(number); i += 2)
        {
            if (number % i == 0)
                return false;
        }
        return true;
    }
}

 

저번 문제에서 썼던 IsPrime함수를 재사용 하자!

 

먼저 for문을 M부터 N까지 돌리면서 i가 소수인지 확인.

소수면 count에 누적더하기.

그리고 그 i가 minV(최소값)보다 작으면 minV에 넣어주자.

minV는 선언할때 int.MaxValue로 초기화해서 최대값을 넣어주었다.

 

for문이 끝나고,

count가 0이라면 -1을 출력해주고

아니라면 count와 minV를 출력해주자.

 

M = 60 N = 100 일때