jinux127
Jinux
jinux127
  • 분류 전체보기 (109)
    • 엘리스 SW 엔지니어 트랙 (6)
      • TIL (6)
    • 개발지식 (22)
      • React (4)
      • JavaScript (9)
      • Web (4)
      • Node.js (1)
      • TypeScript (4)
    • 알고리즘 (69)
      • 백준 (47)
      • 프로그래머스 (14)
      • 이것이 코딩테스트다 (6)
    • 프로젝트 (10)
      • PHOTOCALENDAR (3)
      • 빙수먹을래? (7)
    • Life (0)
      • 헬스 (0)
      • 독서 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • 블로그 이전

인기 글

태그

  • node.js
  • 알고리즘
  • CSS
  • 구현
  • 문법
  • 그리디

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
jinux127

Jinux

알고리즘/백준

[boj 1929] 소수 구하기(에라토스테네스의 체) - js

2022. 2. 27. 14:39

문제

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

입력

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

출력

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

// 소수 구하기

let fs = require('fs');
// let input = fs.readFileSync('/dev/stdin').toString().trim().split('\n'); // 제출용
let input = fs.readFileSync('input.txt').toString().trim().split('\n'); // vscode 테스트용

const [M,N] = input[0].split(' ').map(Number);

const sol = (M,N) =>{
    const primeArr = isPrime(N);
    for(let i = M; i<=N;i++){
        primeArr[i] ? console.log(i) : null;
    }
}

const isPrime = (num) =>{
    const arr = new Array(num+1).fill(true);
    arr.splice(0,2, false,false);
    
    for (let i = 2; i <= Math.sqrt(num); i++) {
        if(arr[i]){
            for(let j = i*i; j<=num; j+=i ){
                arr[j] = false;
            }
        }
    }

    return arr;
}

sol(M,N);

에라토스테네스의 체를 직접 구현하며 이해해볼 수 있었다. 다만 Array를 선언할 때 크기와 조건문의 <= 조건을 주의해야 함을 느꼈다.

'알고리즘 > 백준' 카테고리의 다른 글

[boj 9020] 골드바흐의 추측 - js  (0) 2022.02.28
[boj 4938] 베르트랑 공준 - js  (0) 2022.02.27
[boj 11653] 소인수분해 - js  (0) 2022.02.27
[boj 2581] 소수 - js  (0) 2022.02.26
[boj 1978] 소수 찾기 - js  (0) 2022.02.26
jinux127
jinux127

티스토리툴바