본문 바로가기
IT/Javascript

소수 찾기

by DOSGamer 2022. 7. 13.
반응형

문제

1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요.

소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다.
(1은 소수가 아닙니다.)

제한조건

  • n은 2이상 1000000이하의 자연수입니다.

입출력 예


n result
10 4
5 3

풀이방향

  • 입력된 숫자의 소수를 구하고
  • 소수의 개수를 리턴한다

문제풀이

function primeNumber(num) {
  //소수의 개수 구하기
  let count = 0;
  let n = num;
  while (n > 1) {
    let temp = Math.floor(Math.sqrt(n));
    let isPrime = true;
    for (let i = 2; i <= temp; i++) {
      if (n % i === 0) {
        isPrime = false;
        break;
      }
    }
    if (isPrime) {
      count++;
    }
    n--;
  }
  return count;
}

export { primeNumber };
import { primeNumber } from "../src/primeNumber";

describe("primeNumber", () => {
  it("should return 4 for 10", () => {
    expect(primeNumber(10)).toBe(4);
  });
  it("should return 3 for 5", () => {
    expect(primeNumber(5)).toBe(3);
  });
});

문제출처

다른 풀이

function solution(n) {
    const s = new Set();
    for(let i=1; i<=n; i+=2){
        s.add(i);
    }
    s.delete(1);
    s.add(2);
    for(let j=3; j<Math.sqrt(n); j++){
        if(s.has(j)){
             for(let k=j*2; k<=n; k+=j){    
                s.delete(k);
             }
        }
    }
    return s.size;
}
반응형

'IT > Javascript' 카테고리의 다른 글

비밀지도  (0) 2022.07.14
제일 작은 수 제거하기  (0) 2022.07.14
직사각형 별 찍기  (0) 2022.07.13
문자열 내 p 와 y 의 개수  (0) 2022.07.13
자연수 뒤집어 배열로 만들기  (0) 2022.07.13
문자열 내 마음대로 정렬하기  (0) 2022.07.13
최소직사각형  (0) 2022.07.13
이상한문자 만들기  (0) 2022.07.13