주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오.
첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.
주어진 수들 중 소수의 개수를 출력한다.
4
1 3 5 7
3
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int size = Integer.parseInt(br.readLine());
String[] S_number = br.readLine().split(" ");
int number;
boolean prime;
int count = 0;
for(int i=0; i<size; i++) {
prime = true;
number = Integer.parseInt(S_number[i]);
if(number==1) {
prime = false;
} else if(number>2) {
for(int j=2; j<number; j++) {
if(number%j==0) {
prime = false;
break;
}
}
}
if(prime) count++;
}
System.out.print(count);
}
}
이거보다 좀 더 간결하게 계산할 수 있는 식이 있을 것이다. 소수가 1과 자기 자신만을 약수로 가지는 수에 초점을 맞추어서 1과 자기 자신을 제외한 범위 내에서 검사를 진행하고자 코드를 짜보니, 1과 2를 따로 판별해주어야 하는 경우가 발생했기 때문에 조금 아쉬운 코드같다. (물론 2같은 경우는 자연스럽게 판별될 수 있도록 코드가 나왔지만.) 후에 소수를 계산하는 대표적인 방법을 좀 찾아보고 비교를 좀 해봐야겠다.