문제

✏️https://www.acmicpc.net/problem/1929

해설

2중 for문에서 외부 for문값으로 내부 for문 증가시 배수로 증가 시키는 방법

for(int i = 0; i<Math.sqrt(end); i++){
	for(int j = i+i; j < end; j=j+i){
		...
		//j는 i값의 배수로 증가한다.
    }
}

이 문제는 범위를 외부에 두고
범위에서 일치한 값의 배수를 내부 반복문에 넣어둔다.

코드


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

public class J1929 {
    public static void main(String[] args) throws IOException {
        BufferedReader buffer = new BufferedReader(new InputStreamReader(System.in));
        String[] input = buffer.readLine().split(" ");

        int start = Integer.parseInt(input[0]);
        int end = Integer.parseInt(input[1]);
        int[] array = new int[end + 1];
        for (int i = 0; i < end+1; i++) {
            array[i] = i;
        }

        int key = (int) Math.sqrt(end);
        array[1] = 0;
        for(int i = 0; i<=key; i++){
            if(array[i] == 0) continue;
            for(int j = i+i; j<=end; j=j+i){
                array[j] = 0;
            }
        }

        for(int i = start; i < array.length; i++){
            if(array[i] != 0)
                System.out.println(array[i]);
        }
    }
}
profile
비슷한 어려움을 겪는 누군가에게 도움이 되길

0개의 댓글