본문 바로가기

Algorithm/Baekjoon Oline Judge - Java

[백준] 1929_소수구하기 / 에라토스테네스의 체 알고리즘

 

Sliver

 

문제

M이상 N이하의 소수를 모두 출력하는 프로그램을 작성하시오.

 

입력

첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다.

 

출력

한 줄에 하나씩, 증가하는 순서대로 소수를 출력한다.


 

풀이

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);    
        StringBuilder sb = new StringBuilder();
        int min = sc.nextInt();
        int max = sc.nextInt();
        boolean[] isComposite = new boolean[max+1];
        
        for(int i=2 ; i<=max; i++){
            if(!isComposite[i]){
                for(int j=2 ; i*j<=max; j++){
                    isComposite[i*j] = true;
                }
            }
        }
        
        for(int i=min ; i<=max; i++){
            if(i<=1) continue;
            if(!isComposite[i]) sb.append(String.valueOf(i)).append("\n");
        }
        
        System.out.print(sb);
        sc.close();
    }  
}

 

 

에라스토텔레스의 체 알고리즘

  • 효율적으로 소수를 찾기 위해 배수 제거 원리를 사용하는 알고리즘
  • 시간 복잡도 :

 

 

https://strong-2-min.tistory.com/59

 

[프로그래머스]소수 찾기 / 에라토스테네스의 체 알고리즘

문제 1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요. 풀이 1 #include #include #include using namespace std; bool sosu(int n){ for(int i=2; i

strong-2-min.tistory.com

 

 


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