본문 바로가기
Baekjoon/[2] 수학

[백준] 1078번 소수 찾기 JAVA (자바) 풀이

by Poorm 푸름 2023. 8. 25.

문제 1978번

 :  주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램

 

 [입력]


 :  첫 줄에 수의 개수 N. 그 다음으로 N개의 수가 주어진다.


 [출력]


 :  소수의 개수를 출력


 [코드]

import java.util.*;
import java.io.*;
public class Main{
  	public static void main(String[] args) throws IOException {

		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		br.readLine(); 
		int result = 0;
		StringTokenizer st = new StringTokenizer(br.readLine());

		while (st.hasMoreTokens()) {
			boolean test = true;
			int num = Integer.parseInt(st.nextToken());
			if (num == 1)
				test = false; 
			for (int i = 2; i <= Math.sqrt(num); i++) {
				if (num % i == 0) {
					test = false;
				}
			}
			if (test) {
				result++;
			}
		}
		System.out.println(result);
	}
}

 

 [해설]

 

 :  br.readLine();  첫 줄에 개수 N  

 :  int result = 0;  결과 출력할 reulst 지정

 

 :  StringTokenizer st = new StringTokenizer(br.readLine());  첫줄의 입력을 공백 단위로 구분


 :  while (st.hasMoreTokens()) {  StringTokenizer에 사용할 토큰 있는지 확인
              boolean test = true;  소수인지 아닌지 판단해줄 boolean 설정
              int num = Integer.parseInt(st.nextToken());  둘째줄부터 입력받는 숫자들


 :  if (num == 1){  소수는 1을 포함하지 않으므로 false
              test = false;  continue 라고 써도 Ok

    }
                 

 :  for (int i = 2; i <= Math.sqrt(num); i++) {  number 의 제곱근 만큼 반복

              if (num % i == 0) {   2부터 제곱근까지 나눴을 때 나머지가 0으로 깔끔히 나눠 떨어지면
                        test = false;  입력받은 해당 number은 소수이다
              }
   }

 

 :  if (test) {  소수라고 판정 받았을 때마다 result 카운트
             result++; 
    }

 :  System.out.println(result); 결과 출력

 

 

이제 풀어보러 갈께요 :)

 

 

 

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

 

1978번: 소수 찾기

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

www.acmicpc.net

 

 

* 독학으로 익히는 코딩이라 틀린 것이 있을 수 있습니다. 오류가 있다면 댓글을 통해 알려주세요. 감사합니다. *