소수 찾기(1978)

문제

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

입력

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

출력

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

예제 입력

4
1 3 5 7

예제 출력

3

소수를 구하기 위해서 사용한 방법은 함수를 사용해봤음

boolean형인 isPrime이라는 함수를 만들어서

  • 함수의 인자가 1일때는 소수가 1은 아니기 때문에 false

  • 소수인지를 확인하기 위해서는 자기보다 낮은 수를 나눠봐서 나눠 떨어진다면 인수분해가 된다는 의미이기 떄문에 소수가 아니라는 뜻이다 그래서 false

  • 이렇게 소수가 아닌 수를 거르고 남은 수가 소수이기 때문에 true

풀이

import java.io.*;
import java.util.*;

public class Main{
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine());
        int count = 0;
        StringTokenizer st = new StringTokenizer(br.readLine(), " ");
        for(int i=0; i<N; i++){
            if(isPrime(Integer.parseInt(st.nextToken()))){
                count++;
            }
        }
        System.out.println(count);
    }
    public static boolean isPrime(int n){
        if(n==1) return false;
        for(int k=2; k<n; k++){
            if(n%k == 0) return false;
        }
        return true;
    }
}

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

Last updated

Was this helpful?