https://www.acmicpc.net/problem/1978
[ 문제 ]
주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오.
[ 입력 ]
첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.
[ 출력 ]
주어진 수들 중 소수의 개수를 출력한다.
[ 입출력 예시 ]
예제 입력 | 예제 출력 |
---|---|
4 1 3 5 7 | 3 |
- 몇 개 입력 받을지에 대한 변수(N)을 선언하고 입력 받는다.
입력 받은 정수에 대해 몇 개가 소수일지 카운트 해줄 변수(count)를 0으로 초기화하여 선언한다.
- 입력 받을 개수 N만큼 루프를 돌려 입력 된 정수가 소수인지 판단한다.
소수인지 판단할 boolean변수(prime)를 true로 설정하고 입력 받은 수(t)를 판단 검사한다.
여기서 판단한 방법은 t가 1일 때 제외 하고 t를 2부터 t-1 까지 하나씩 나누어보면서 검사하였다.
이때, 나누어 떨어지는 수가 있으면 boolean변수 (prime)을 false로 변경하고, 소수 검사를 break;한다.
만약 소수 검사를 마치고 prime 변수가 true값이라면 count를 증가시켜 소수 개수를 세어준다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt((st.nextToken()));
int count = 0;
st = new StringTokenizer(br.readLine(), " ");
for(int i=0; i<N; i++) {
boolean prime = true;
int t = Integer.parseInt(st.nextToken());
if(t==1) {
continue;
}
for (int j = 2 ; j < t; j++) {
if (t % j == 0) {
prime = false;
break;
}
}
if (prime == true) {
count++;
}
}
System.out.println(count);
}
}