hye-log

[백준]1978번 소수 찾기(JAVA) 본문

CodingTest/Baekjoon

[백준]1978번 소수 찾기(JAVA)

iihye_ 2023. 8. 18. 18:35

0. 문제 링크

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

 

1978번: 소수 찾기

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

www.acmicpc.net

 

1. 문제 설명

1) 주어진 수 N개 중에서 소수의 개수 출력

 

2. 입출력

// input
4
1 3 5 7

// output
3

 

3. 코드

import java.util.Scanner;

public class b1978 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		int ans = 0; // 소수의 개수
		
		for (int i = 0; i < N; i++) { // N개의 수가 소수인지 판단
			int num = sc.nextInt(); 
			if(isPrime(num)) ans++; // 소수이면 ans 1 증가
		}
		
		System.out.println(ans);
	}

	private static boolean isPrime(int n) { // 소수인지 판단
		if(n == 1) { //1은 소수가 아니다
			return false;
		}
		for (int i = 2; i <= (int)Math.sqrt(n); i++) { // 2부터 n의 제곱근까지 나누어 봄 
			if(n % i == 0) { // 나머지가 0이면 나누어 떨어지므로 소수가 아님
				return false;
			}
		}
		
		return true; // 모든 나누기를 통과하면 소수
	}

}

 

실행 결과

 

4. 회고

1) 소수인지 판단하는 isPrime 함수 이용

- 1은 소수가 아님

- 2부터 n의 제곱근까지 나누었을 때 나머지가 0이면 소수가 아님

- 모두 나누어 떨어지지 않으면 소수

 

5. Github

 

728x90
Comments