백준공부/java

[백준] 31216번 슈퍼 소수 (silver 5

gomduri43 2024. 2. 27. 19:30

import java.io.*;
import java.util.*;

public class Main{
    public static void main(String[]args) throws IOException{
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out));
        ArrayList<Integer> arr=new ArrayList<>();
        int[] num=new int[318138];
        num[1]=1;
        for(int i=2; i<318138; i++){
            if(num[i]==1){
                continue;
            }
            for(int j=i+i; j<318138; j+=i){
                num[j]=1;
            }
        }

        int k=1;
        for(int i=2; i<318138; i++){
            if(num[i]==0){
                if(num[k]==0){
                    arr.add(i);
                }
                k++;
            }
        }

        int n=Integer.valueOf(br.readLine());
        for(int i=0; i<n; i++){
            int q=Integer.valueOf(br.readLine());
            bw.write(arr.get(q-1)+"\n");
        }
        bw.flush();



    }
}


// 슈퍼소수란 결국, n번째의 n이 소수일 경우만 추가를 해서. 새롭게 만들어진 수 배열에서의
// n번째 수들을 구하는 것