C# 백준 4948번 베트르탕 공준

2022. 1. 3. 17:03C#/[백준] 기본 수학2

문제

코드 :

using System;

namespace _5
{
    internal class Program
    {
        static void Main(string[] args)
        {
            while(true)
            {
                int input = Convert.ToInt32(Console.ReadLine());
                if (input == 0)
                    break;
                int num = 0;

                for (int i = input+1; i <= input * 2; i++)
                {

                    if (i == 1)
                        continue;
                    if (i == 2 | i == 3)
                        num += 1;
                    if (i % 2 == 0)
                        continue;

                    double sqrt = Math.Truncate(Math.Sqrt(i));
                    //제곱근 이하의 수에서 나누어 떨어지지 않으면 소수이므로 제곱근의 버림값을 저장
                    for (int j = 2; j <= sqrt; j++)
                    {
                        if (i % j == 0)
                        {
                            break;
                        }
                        else
                        {
                            if (j == sqrt)
                            {
                                num += 1;
                            }
                        }
                    }

                }
                Console.WriteLine(num);
            }
        }
    }
}

코드는 그 위에 문제였던 소수 구하기의 코드와 사실 거의 똑같다.

그 코드에서 for문의 범위만 다르게 지정해주면 끝이다.

기본수학2는 소수문제가 많아 앞에 문제를 효율적으로 풀면 뒤에 문제는 술술 풀린다는 특징이 있다.