본문 바로가기
백준 Algorithm/백준 CLASS2

[백준] CLASS2 1978 : 소수 찾기 - JAVA [자바]

by Echung 2023. 10. 2.

 안녕하세요. 이번에는 백준 1978 소수 찾기 문제를 풀어보려고 합니다.

 

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

 

1978번: 소수 찾기

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

www.acmicpc.net


Problem

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

사진 1. 문제


Solution

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++) {
            int num = Integer.parseInt(st.nextToken());
            
            if(isPrime(num)) {
                count++;
            }
        }

        System.out.println(count);
        
    }
    
    public static boolean isPrime(int num) {
        if(num < 2) {
            return false;    
        }
        
        for(int i = 2; i * i <= num; i++) {
            if(num % i == 0) {
                return false;
            }
        }
        
        return true;
    }
}

 

 이번 문제는 소수 찾기 문제이다 소수 문제는 에라토스테너스의 체를 사용하는 것이 가장 좋다.

 

isPrime이 에라토스테너스의 체이다

    public static boolean isPrime(int num) {
        if(num < 2) {
            return false;    
        }
        
        for(int i = 2; i * i <= num; i++) {
            if(num % i == 0) {
                return false;
            }
        }
        
        return true;
    }

 

 나중에 에라토스테너스의 체도 포스팅 해봐야겠다. 


Performance

사진 2. 실행 결과

 

반응형