문제

주어진 수 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