첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다.
출력
한 줄에 하나씩, 증가하는 순서대로 소수를 출력한다.
풀이
1. 숫자의 √N까지 확인하는 방법을 사용하여 문제를 해결한다. 2. √N의 값은 N의 약수를 나열한 값들 중 중간에 위치한다. 따라서 2에서 부터 √N까지의 값을 검색한 이후의 값은 확인할 필요가 없다. 3. 시간복잡도는 O(√N)이 된다. 편리하게 계산하기위하여 값에 제곱을 곱하여 계산하였다.
코드
/*
주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오.
*/
import java.util.*;
class Main {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int count = 0;
for(int i = 0; i < N; i++){
int num = sc.nextInt();
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;
}
}