문제

조규현과 백승환은 터렛에 근무하는 직원이다. 하지만 워낙 존재감이 없어서 인구수는 차지하지 않는다. 다음은 조규현과 백승환의 사진이다.

이석원은 조규현과 백승환에게 상대편 마린(류재명)의 위치를 계산하라는 명령을 내렸다. 조규현과 백승환은 각각 자신의 터렛 위치에서 현재 적까지의 거리를 계산했다.

조규현의 좌표 (x1, y1)와 백승환의 좌표 (x2, y2)가 주어지고, 조규현이 계산한 류재명과의 거리 r1과 백승환이 계산한 류재명과의 거리 r2가 주어졌을 때, 류재명이 있을 수 있는 좌표의 수를 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 다음과 같이 이루어져 있다.

한 줄에 x1, y1, r1, x2, y2, r2가 주어진다. x1, y1, x2, y2는 -10,000보다 크거나 같고, 10,000보다 작거나 같은 정수이고, r1, r2는 10,000보다 작거나 같은 자연수이다.

출력

각 테스트 케이스마다 류재명이 있을 수 있는 위치의 수를 출력한다. 만약 류재명이 있을 수 있는 위치의 개수가 무한대일 경우에는 -1을 출력한다.

 

두 점 사이의 거리 d 를 구하고 각 원의 반지름과 길이를 비교하여 두원의 교차점을 구해야 함.

터렛(원) 좌표 기준 류재명과의 거리가 해당 원의 반지름이다.   

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
using System;
using System.Linq;
using System.Text;
 
class Program
{
    static void Main(string[] args)
    {
        int iCase = int.Parse(Console.ReadLine());
        StringBuilder sResult = new StringBuilder();
        for(int i = 0; i < iCase; i++)
        {
            int[] iArr = Console.ReadLine().Split().Select(n => int.Parse(n)).ToArray();
            int x1 = iArr[0];
            int y1 = iArr[1];
            int r1 = iArr[2];
            int x2 = iArr[3];
            int y2 = iArr[4];
            int r2 = iArr[5];
            
            double d = Math.Sqrt(Math.Pow(x2-x1,2+ Math.Pow(y2-y1,2));
            
            if(d == 0)
            {
                if( r1 == r2)
                {
                    sResult.Append("-1\n");
                }
                else
                {
                    sResult.Append("0\n");   
                }                    
            }
            else if(d < Math.Abs(r1-r2) || d > r1 + r2)
            {
                sResult.Append("0\n");
            }
            else if(d == Math.Abs(r1-r2)||== r1+r2)
            {
                sResult.Append("1\n");
            }
            else if(Math.Abs(r1-r2) < d && d < r1+r2)
            {
                sResult.Append("2\n");
            }
        }
        Console.WriteLine(sResult);
    }
}
cs

 

https://www.acmicpc.net/problem/1002

 

1002번: 터렛

각 테스트 케이스마다 류재명이 있을 수 있는 위치의 수를 출력한다. 만약 류재명이 있을 수 있는 위치의 개수가 무한대일 경우에는 -1을 출력한다.

www.acmicpc.net

 

문제

19세기 독일 수학자 헤르만 민코프스키는 비유클리드 기하학 중 택시 기하학을 고안했다.

택시 기하학에서 두 점 T1(x1,y1), T2(x2,y2) 사이의 거리는 다음과 같이 구할 수 있다.

D(T1,T2) = |x1-x2| + |y1-y2|

두 점 사이의 거리를 제외한 나머지 정의는 유클리드 기하학에서의 정의와 같다.

따라서 택시 기하학에서 원의 정의는 유클리드 기하학에서 원의 정의와 같다.

원: 평면 상의 어떤 점에서 거리가 일정한 점들의 집합

반지름 R이 주어졌을 때, 유클리드 기하학에서 원의 넓이와, 택시 기하학에서 원의 넓이를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 반지름 R이 주어진다. R은 10,000보다 작거나 같은 자연수이다.

출력

첫째 줄에는 유클리드 기하학에서 반지름이 R인 원의 넓이를, 둘째 줄에는 택시 기하학에서 반지름이 R인 원의 넓이를 출력한다. 정답과의 오차는 0.0001까지 허용한다.

택시 기하학이라는걸 처음 들어봐서 관련 지식부터 공부했다.

 

https://librewiki.net/wiki/%ED%83%9D%EC%8B%9C_%EA%B8%B0%ED%95%98%ED%95%99

 

택시 기하학

Taxicab Geometry.

librewiki.net

해당 위키에서 택시 기하학이 뭔지 파악했고 택시 기하학에서 원은 마름모가 된다는걸 알았다.

마름모의 넓이를 구할 수 있다면 이번 문제는 쉽게 해결 될 것이다.

 

택시 기하학 원의 마름모는 대각선의 길이가 같기때문에 

2 * R * R = 마름모의 넓이, 해당 공식으로 넓이를 구할 수 있다.

 

코드는 다음과 같다.

 

1
2
3
4
5
6
7
8
9
10
11
using System;
class Program
{
    static void Main(string[] args)
    {
         int iR = int.Parse(Console.ReadLine());
 
         Console.WriteLine((iR * iR * Math.PI).ToString("0.######"));
         Console.WriteLine((2 * iR * iR).ToString("0.######"));
    }
}
cs

 

https://www.acmicpc.net/problem/3053

 

3053번: 택시 기하학

문제 19세기 독일 수학자 헤르만 민코프스키는 비유클리드 기하학 중 택시 기하학을 고안했다. 택시 기하학에서 두 점 T1(x1,y1), T2(x2,y2) 사이의 거리는 다음과 같이 구할 수 있다. D(T1,T2) = |x1-x2| + |

www.acmicpc.net

 

문제

과거 이집트인들은 각 변들의 길이가 3, 4, 5인 삼각형이 직각 삼각형인것을 알아냈다. 주어진 세변의 길이로 삼각형이 직각인지 아닌지 구분하시오.

입력

입력은 여러개의 테스트케이스로 주어지며 마지막줄에는 0 0 0이 입력된다. 각 테스트케이스는 모두 30,000보다 작은 양의 정수로 주어지며, 각 입력은 변의 길이를 의미한다.

출력

각 입력에 대해 직각 삼각형이 맞다면 "right", 아니라면 "wrong"을 출력한다.

 

직각 삼각형의 정수비를 이용하여 풀이함.

ex) 3:4:5 => 32 + 42 = 52

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
using System;
using System.Linq;
using System.Text;
class Program
{
    static void Main(string[] args)
    {
         StringBuilder sResult = new StringBuilder();
         for(; ;)
         {
            int[] arrValue = Console.ReadLine().Split().Select(n => int.Parse(n)).ToArray();
            Array.Sort(arrValue);
            if (arrValue[0== 0break;
            if((Math.Pow(arrValue[0],2+ Math.Pow(arrValue[1],2)) == Math.Pow(arrValue[2],2))
            {
              sResult.Append("right\n");
            }
            else
            {
              sResult.Append("wrong\n");
            }
         }
         Console.WriteLine(sResult);
    }
}
cs

 

https://www.acmicpc.net/problem/4153

 

4153번: 직각삼각형

문제 과거 이집트인들은 각 변들의 길이가 3, 4, 5인 삼각형이 직각 삼각형인것을 알아냈다. 주어진 세변의 길이로 삼각형이 직각인지 아닌지 구분하시오. 입력 입력은 여러개의 테스트케이스로

www.acmicpc.net

 

문제

세 점이 주어졌을 때, 축에 평행한 직사각형을 만들기 위해서 필요한 네 번째 점을 찾는 프로그램을 작성하시오.

입력

세 점의 좌표가 한 줄에 하나씩 주어진다. 좌표는 1보다 크거나 같고, 1000보다 작거나 같은 정수이다.

출력

직사각형의 네 번째 점의 좌표를 출력한다.

X, Y 좌표 각각 중복 없는 수가 네 번째 점이다.

비교문을 통해 중복 없는 수를 구함.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
using System;
using System.Linq;
 
class Program
{
    static void Main(string[] args)
    {
         int[] x = new int[3];
         int[] y = new int[3];
         int iResultX;
         int iResultY;
         for(int i = 0; i < 3; i++)
         {
            string[] s = Console.ReadLine().Split().ToArray();
            x[i] = int.Parse(s[0]);
            y[i] = int.Parse(s[1]);
         }
 
        if (x[0== x[1]) iResultX = x[2];
        else if (x[0== x[2]) iResultX = x[1];
        else iResultX = x[0];
 
        if (y[0== y[1]) iResultY = y[2];
        else if (y[0== y[2]) iResultY = y[1];
        else iResultY = y[0];
 
        Console.WriteLine(iResultX + " " + iResultY);
    }
}
cs

 

https://www.acmicpc.net/problem/3009

 

3009번: 네 번째 점

문제 세 점이 주어졌을 때, 축에 평행한 직사각형을 만들기 위해서 필요한 네 번째 점을 찾는 프로그램을 작성하시오. 입력 세 점의 좌표가 한 줄에 하나씩 주어진다. 좌표는 1보다 크거나 같고,

www.acmicpc.net

 

문제

한수는 지금 (x, y)에 있다. 직사각형의 왼쪽 아래 꼭짓점은 (0, 0)에 있고, 오른쪽 위 꼭짓점은 (w, h)에 있다. 직사각형의 경계선까지 가는 거리의 최솟값을 구하는 프로그램을 작성하시오.

입력

첫째 줄에 x y w h가 주어진다. w와 h는 1,000보다 작거나 같은 자연수이고, x는 1보다 크거나 같고, w-1보다 작거나 같은 자연수이고, y는 1보다 크거나 같고, h-1보다 작거나 같은 자연수이다.

출력

첫째 줄에 문제의 정답을 출력한다.

 

4개의 변중 가장 가까운 곳의 거리를 찾아내면 된다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
using System;
using System.Linq;
 
class Program
{
    static void Main(string[] args)
    {
        int[] arrInput = Console.ReadLine().Split().Select(n => int.Parse(n)).ToArray();
        int A;
        int B;
        if(arrInput[0<= arrInput[2/ 2)
        {
            A = arrInput[0];
        }
        else
        {
            A = arrInput[2- arrInput[0];
        }
        if(arrInput[1<= arrInput[3/ 2)
        {
            B = arrInput[1];
        }
        else
        {
            B = arrInput[3- arrInput[1];
        }
        
        Console.WriteLine(A > B ? B : A);
    }
}
cs

 

https://www.acmicpc.net/problem/1085

 

1085번: 직사각형에서 탈출

첫째 줄에 x y w h가 주어진다. w와 h는 1,000보다 작거나 같은 자연수이고, x는 1보다 크거나 같고, w-1보다 작거나 같은 자연수이고, y는 1보다 크거나 같고, h-1보다 작거나 같은 자연수이다.

www.acmicpc.net

 

문제

1보다 큰 자연수 중에서  1과 자기 자신을 제외한 약수가 없는 자연수를 소수라고 한다. 예를 들어, 5는 1과 5를 제외한 약수가 없기 때문에 소수이다. 하지만, 6은 6 = 2 × 3 이기 때문에 소수가 아니다.

골드바흐의 추측은 유명한 정수론의 미해결 문제로, 2보다 큰 모든 짝수는 두 소수의 합으로 나타낼 수 있다는 것이다. 이러한 수를 골드바흐 수라고 한다. 또, 짝수를 두 소수의 합으로 나타내는 표현을 그 수의 골드바흐 파티션이라고 한다. 예를 들면, 4 = 2 + 2, 6 = 3 + 3, 8 = 3 + 5, 10 = 5 + 5, 12 = 5 + 7, 14 = 3 + 11, 14 = 7 + 7이다. 10000보다 작거나 같은 모든 짝수 n에 대한 골드바흐 파티션은 존재한다.

2보다 큰 짝수 n이 주어졌을 때, n의 골드바흐 파티션을 출력하는 프로그램을 작성하시오. 만약 가능한 n의 골드바흐 파티션이 여러 가지인 경우에는 두 소수의 차이가 가장 작은 것을 출력한다.

입력

첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고 짝수 n이 주어진다. (4 ≤ n ≤ 10,000)

출력

각 테스트 케이스에 대해서 주어진 n의 골드바흐 파티션을 출력한다. 출력하는 소수는 작은 것부터 먼저 출력하며, 공백으로 구분한다.

 

에라토스테네스의 채를 이용하여 10000까지 소수를 구해놓고

 

n 의 절반부터 양쪽다 소수인 경우를 찾는다. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
using System;
using System.Linq;
using System.Text;
class Program
{
    static void Main(string[] args)
    {
        int iNum = int.Parse(Console.ReadLine());
        bool[] bPrime = Enumerable.Repeat(true10000+1).ToArray();
        bPrime[1= true;
        for(int i = 2; i <= Math.Sqrt(10000); i++)
        {
            if(bPrime[i])
            {
                for(int j = i*i; j <= 10000; j += i)
                {
                    bPrime[j] = false;
                }
            }
        }
        
        StringBuilder sResult = new StringBuilder();
        for(int i = 0; i < iNum; i++)
        {
            int iTC = int.Parse(Console.ReadLine());
            int iHalf = iTC / 2;
            for(int j = iHalf; j > 0; j--)
            {
                if(bPrime[j] && bPrime[iHalf])
                {
                    sResult.Append(j + " " + iHalf + "\n");
                    break;
                }
                iHalf++;
            }
        }
        Console.WriteLine(sResult);
        
    }
}
cs

https://www.acmicpc.net/problem/9020

 

9020번: 골드바흐의 추측

문제 1보다 큰 자연수 중에서  1과 자기 자신을 제외한 약수가 없는 자연수를 소수라고 한다. 예를 들어, 5는 1과 5를 제외한 약수가 없기 때문에 소수이다. 하지만, 6은 6 = 2 × 3 이기 때문에 소수

www.acmicpc.net

 

문제

베르트랑 공준은 임의의 자연수 n에 대하여, n보다 크고, 2n보다 작거나 같은 소수는 적어도 하나 존재한다는 내용을 담고 있다.

이 명제는 조제프 베르트랑이 1845년에 추측했고, 파프누티 체비쇼프가 1850년에 증명했다.

예를 들어, 10보다 크고, 20보다 작거나 같은 소수는 4개가 있다. (11, 13, 17, 19) 또, 14보다 크고, 28보다 작거나 같은 소수는 3개가 있다. (17,19, 23)

n이 주어졌을 때, n보다 크고, 2n보다 작거나 같은 소수의 개수를 구하는 프로그램을 작성하시오.

입력

입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 케이스는 n을 포함하며, 한 줄로 이루어져 있다. (n ≤ 123456)

입력의 마지막에는 0이 주어진다.

출력

각 테스트 케이스에 대해서, n보다 크고, 2n보다 작거나 같은 소수의 개수를 출력한다.

 

https://kplee.tistory.com/58

 

백준 문제 번호 : 1978 - 소수찾기

문제 주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오. 입력 첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하��

kplee.tistory.com

해당 알고리즘 응용하여 작성

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
using System;
using System.Text;
 
class Program
{
    static void Main(string[] args)
    {
        StringBuilder sResult = new StringBuilder();
        for(;;)
        {
            int n = int.Parse(Console.ReadLine());
            if(n==0break;
            bool bPrime = true;
            int iCount = 0;
            for(int i = n+1; i <= 2*n; i++)
            {
                bPrime = true;
                int j = 2;
                do
                {
                    if((i==1 || i%j==0)&& i!=j)
                    {
                        bPrime = false;
                        break;
                    }
                    j++;
                }while(j <= Math.Sqrt(i));
                if(bPrime) iCount++;
            }
            sResult.Append(iCount + "\n");
        }
        Console.WriteLine(sResult);
    }
}
cs

 

https://www.acmicpc.net/problem/4948

 

4948번: 베르트랑 공준

문제 베르트랑 공준은 임의의 자연수 n에 대하여, n보다 크고, 2n보다 작거나 같은 소수는 적어도 하나 존재한다는 내용을 담고 있다. 이 명제는 조제프 베르트랑이 1845년에 추측했고, 파프누티 ��

www.acmicpc.net

 

문제

M이상 N이하의 소수를 모두 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다.

출력

한 줄에 하나씩, 증가하는 순서대로 소수를 출력한다.

 

두 가지 방법으로 풀어보았다.

 

첫 번째는 

https://kplee.tistory.com/58

 

백준 문제 번호 : 1978 - 소수찾기

문제 주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오. 입력 첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하��

kplee.tistory.com

여기서 푼 방법을 이용하여 알고리즘을 작성함.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
using System;
using System.Linq;
 
class Program
{
    static void Main(string[] args)
    {
        int[] arrNum = Console.ReadLine().Split().Select(a => int.Parse(a)).ToArray();
        
        bool bSosu = true;
        for(int i = arrNum[0]; i <= arrNum[1]; i++)
        {
            bSosu = true;
            int j = 2;
            do
            {
                if((i==1 || i % j == 0&& i != j)
                {
                    bSosu = false;
                    break;
                }
                j++;
            }
            while(j <= Math.Sqrt(i));
            if(bSosu)
            {
                Console.WriteLine(i);
            }
        }
    }
}
cs

위의 방법을 사용했을때 메모리와 시간이다.

 

두 번째는 에라토스테네스의 체를 이용한 방식이다.

문제 하단에 알고리즘 분류에 에라토스테네스의 체가 적혀있어서 관련 내용을 찾아보고 그 방식을 이용하여 알고리즘을 작성함.

 

에라토스테네스의 체가 어떤건지는 구글에 검색하면 자세히 나온다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
using System;
using System.Linq;
 
class Program
{
    static void Main(string[] args)
    {
        int[] arrNum = Console.ReadLine().Split().Select(a => int.Parse(a)).ToArray();
        bool[] bSosu = Enumerable.Repeat(true, arrNum[1+ 1).ToArray();
        bSosu[1= false;
        
        for(int i = 2; i <= Math.Sqrt(arrNum[1]); i++)
        {
            if(bSosu[i])
            {
                for(int j = i*i; j <= arrNum[1]; j += i)
                {
                    bSosu[j] = false;
                }
            }
        }
        
        for(int i = arrNum[0]; i <= arrNum[1]; i++)
        {
            if(bSosu[i])
            {
                Console.WriteLine(i);
            }
        }
    }
}
cs

두 번째 방법을 사용했을때 사용되는 메모리와 시간이다. bool 배열 때문에 메모리의 사용량은 더 많지만 시간은 더 적게 걸린다.

문제

자연수 M과 N이 주어질 때 M이상 N이하의 자연수 중 소수인 것을 모두 골라 이들 소수의 합과 최솟값을 찾는 프로그램을 작성하시오.

예를 들어 M=60, N=100인 경우 60이상 100이하의 자연수 중 소수는 61, 67, 71, 73, 79, 83, 89, 97 총 8개가 있으므로, 이들 소수의 합은 620이고, 최솟값은 61이 된다.

입력

입력의 첫째 줄에 M이, 둘째 줄에 N이 주어진다.

M과 N은 10,000이하의 자연수이며, M은 N보다 작거나 같다.

출력

M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다. 

단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다.

 

https://kplee.tistory.com/58?category=685899

 

백준 문제 번호 : 1978 - 소수찾기

문제 주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오. 입력 첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하��

kplee.tistory.com

해당 문제에서 사용한 소수찾기 알고리즘을 이용하여 작성함

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
using System;
using System.Linq;
 
class Program
{
    static void Main(string[] args)
    {
        int M = int.Parse(Console.ReadLine());
        int N = int.Parse(Console.ReadLine());
        
        int iTotal = 0;
        int iMin = 0;
        
        bool bSosu = true;
        for(int i = M; i <= N; i++)
        {
            bSosu = true;
            int j = 2;
            do
            {
                if((i==1 ||i % j == 0&& i != j)
                {
                    bSosu = false;
                }
                j++;
            }
            while(j <= Math.Sqrt(i));
            if(bSosu)
            {
                iTotal += i;
                if(iMin == 0) iMin = i;
            }
        }
        if(iTotal != 0)
        {
            Console.WriteLine(iTotal);
            Console.WriteLine(iMin);
        }
        else 
        {
            Console.WriteLine("-1");
        }
    }
}
cs

 

https://www.acmicpc.net/problem/2581

 

2581번: 소수

M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다.  단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다.

www.acmicpc.net

 

문제

주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오.

입력

첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.

출력

주어진 수들 중 소수의 개수를 출력한다.

소수를 구할때 나누기 횟수를 최대한 줄여보려고 해당 수의 제곱근까지만 나누는 방식으로 함.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
using System;
using System.Linq;
 
class Program
{
    static void Main(string[] args)
    {
        int iNum = int.Parse(Console.ReadLine());
        int[] arrNum = Console.ReadLine().Split().Select(s => int.Parse(s)).ToArray();
        int iCount = 0;
        for(int i = 0; i < iNum; i++)
        {
            iCount++;
            int j = 2;
            do
            {
                if((arrNum[i] == 1 || arrNum[i] % j ==0&& arrNum[i] != j)
                {
                    iCount--;
                    break;
                }
                j++;
            }
            while(j <= Math.Sqrt(arrNum[i]));
        }
        Console.WriteLine(iCount);
    }
}
cs

 

https://www.acmicpc.net/problem/1978

 

1978번: 소수 찾기

첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.

www.acmicpc.net

 

+ Recent posts