본문 바로가기
코딩테스트 준비/백준 C#

백준 C# - 17103 +) 풀이

by 코딩하는 돼징 2023. 11. 26.
반응형

이 문제를 알기 앞서 에라토스테네스의 체를 알아야 한다. 그래서 아래 문제를 먼저 풀고 오는 것을 추천한다.

백준 C# - 1929

 

백준 C# - 1929 +) 에라토스테네스의 체

풀이 처음에 1978과 같은 형식으로 문제를 풀었는데 계속 시간초과가 나왔다. 백준 C# - 1978 +) 풀이 풀이 소수 찾기 문제이다. 소수는 1과 자기 자신 만을 약수로 가지는 수이다. 01 1은 소수가 아니

code-piggy.tistory.com


01 에라토스테네스의 체

위의 링크에 에로트세테스의 체에 관련된 설명을 확인할 수 있다.

bool[] isPrime = Enumerable.Repeat(true, 1000000 + 1).ToArray();
for (int i = 2; i * i <= 1000000; i++)
{
    if (isPrime[i])
    {
        for (int j = i * i; j <= 1000000; j += i)
        {
            isPrime[j] = false;
        }
    }
}

02 골드 바흐 파티션

골드 바흐의 추측은  2보다 큰 짝수는 두 소수의 합으로 나타낼 수 있다. 그러므로 합을 이용해서 두 수가 소수인지 확인해보고 둘 다 소수인 경우 count를 증가시킨다.

for (int j = 2; j <= n/2; j++)
{
    if (isPrime[j] && isPrime[n - j])
        count++;
}

 


코드 전문

using System;
using System.Linq;

namespace baek2
{
   
    class Program
    {
        static void Main(string[] args)
        {
            int t = int.Parse(Console.ReadLine());           
            bool[] isPrime = Enumerable.Repeat(true, 1000000 + 1).ToArray();

            for (int i = 2; i * i <= 1000000; i++)
            {
                if (isPrime[i])
                {
                    for (int j = i * i; j <= 1000000; j += i)
                    {
                        isPrime[j] = false;
                    }
                }
            }
            for (int i = 0; i < t; i++)
            {
                int count = 0;
                int n = int.Parse(Console.ReadLine());
                for (int j = 2; j <= n/2; j++)
                {
                    if (isPrime[j] && isPrime[n - j])
                        count++;
                }
                Console.WriteLine(count);
            }
        }
    }
}

 

 

 

 

 

 

 

반응형

'코딩테스트 준비 > 백준 C#' 카테고리의 다른 글

백준 C# - 11653  (0) 2023.11.27
백준 C# - 11576 +)풀이  (0) 2023.11.27
백준 C# - 2745 +)풀이  (0) 2023.11.23
백준 C# - 11005 +)풀이  (0) 2023.11.22
백준 C# - 2089 +) 풀이  (0) 2023.11.22

댓글