๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์•Œ๊ณ ๋ฆฌ์ฆ˜

[Java] BOJ 1929 ์†Œ์ˆ˜ ๊ตฌํ•˜๊ธฐ

by ๐ŸŠ๊ทค๐ŸŠ 2024. 7. 21.

๋ฌธ์ œ 

๋ฌธ์ œ ๋งํฌ https://www.acmicpc.net/problem/1929

  • M์ด์ƒ N์ดํ•˜์˜ ์†Œ์ˆ˜๋ฅผ ๋ชจ๋‘ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.
  • ์ฒซ์งธ ์ค„์— ์ž์—ฐ์ˆ˜ M๊ณผ N์ด ๋นˆ ์นธ์„ ์‚ฌ์ด์— ๋‘๊ณ  ์ฃผ์–ด์ง„๋‹ค. (1 ≤ M ≤ N ≤ 1,000,000) M์ด์ƒ N์ดํ•˜์˜ ์†Œ์ˆ˜๊ฐ€ ํ•˜๋‚˜ ์ด์ƒ ์žˆ๋Š” ์ž…๋ ฅ๋งŒ ์ฃผ์–ด์ง„๋‹ค.
  • ํ•œ ์ค„์— ํ•˜๋‚˜์”ฉ, ์ฆ๊ฐ€ํ•˜๋Š” ์ˆœ์„œ๋Œ€๋กœ ์†Œ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

์•„์ด๋””์–ด

  • ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ž…๋ ฅ๋ฐ›์€ N๊นŒ์ง€ ์†Œ์ˆ˜๋ฅผ boolean ๋ฐฐ์—ด์„ ํ†ตํ•ด ๊ตฌํ–ˆ๋‹ค.

๊ฒช์€ ์‹œํ–‰์ฐฉ์˜ค

  • X

ํ™•์‹คํžˆ ์†Œ์ˆ˜ ๊ด€๋ จ๋œ ๋ฌธ์ œ๋“ค์€ ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด๋ฅผ ์•Œ๊ณ ๋‚˜๋‹ˆ ํ’€๊ธฐ๊ฐ€ ํ•œ๊ฒฐ ์ˆ˜์›”ํ•˜๋‹ค ใ…Žใ…Ž!!

์ฝ”๋“œ

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

public class BOJ1929 {
    public static void main(String[] args) throws Exception{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();

        StringTokenizer st = new StringTokenizer(br.readLine());

        int M = Integer.parseInt(st.nextToken());
        int N = Integer.parseInt(st.nextToken());

        // ์†Œ์ˆ˜์ธ์ง€ ์•„๋‹Œ์ง€ boolean ๊ฐ’์œผ๋กœ ์ €์žฅ
        boolean prime[] = new boolean[N + 1];

        // true ๊ฐ’์ด ์†Œ์ˆ˜ ์•„๋‹Œ ๊ฒƒ
        // false ๊ฐ’์ด ์†Œ์ˆ˜ ์ธ๊ฒƒ
        // 0๊ณผ 1์€ ์†Œ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ true๋กœ ๋ณ€ํ™˜
        prime[0] = true;
        prime[1] = true;

        for(int i = 2; i <= Math.sqrt(N); i++){
            // i๋ฒˆ์งธ ์ˆ˜๊ฐ€ ์†Œ์ˆ˜๋ผ๋ฉด
            if(!prime[i]){
                // i์˜ ๋ฐฐ์ˆ˜๋Š” ๋‹ค i๋ฅผ ์•ฝ์ˆ˜๋กœ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฏ€๋กœ true๋กœ ๋ณ€ํ™˜
                for(int j = i * i; j <= N; j = j + i){
                    prime[j] = true;
                }
            }
        }

        // M๋ถ€ํ„ฐ N๊นŒ์ง€ ์†Œ์ˆ˜์ธ ๊ฒƒ(boolean ๊ฐ’์ด false์ธ ๊ฒƒ๋“ค)์„ ์ถœ๋ ฅ
        for(int i = M; i <= N; i++){
            if(!prime[i]){
                sb.append(i + "\n");
            }
        }

        System.out.println(sb);
    }
}



'์•Œ๊ณ ๋ฆฌ์ฆ˜' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Java] BOJ 2108 ํ†ต๊ณ„ํ•™  (2) 2024.07.22
[Java] BOJ 1966 ํ”„๋ฆฐํ„ฐ ํ  (0) 2024.07.21
[Java] BOJ 18110 solved.ac  (2) 2024.07.21
[Java] BOJ 10845 ํ  (4) 2024.07.20
[Java] BOJ 10828 ์Šคํƒ  (0) 2024.07.20