Jun 개발노트

프로그래머스 - 소수찾기

2020-01-30

소수찾기

const getPrimeNumber = n => {
    let count = 0;
    let nArr = Array(n - 1)
        .fill()
        .map((v, i) => i + 2);
    for (let value of nArr) {
        let primeNum = true;
        for (let i = 2; i < value; i++) {
            if (value % i === 0) primeNum = false;
        }
        if (primeNum) count++;
    }

    return count;
};

const solution = n => {
    let answer = 0;
    let arr = [];

    // 빈 배열에 값 초기화
    for (let i = 2; i <= n; i++) {
        arr[i] = i;
    }
    console.log(arr);
    for (let i = 2; i <= n; i++) {
        if (arr[i] === 0)
            // 이미 체크된 수의 배수는 확인하지 않는다
            continue;
        for (let j = i + i; j <= n; j += i) {
            // i를 제외한 i의 배수들은 0으로 체크
            console.log(j);
            arr[j] = 0;
        }
    }
    console.log(arr);

    // 0이 아닌 수들은 모두 소수이므로, answer을 증가한다.
    for (let i = 2; i <= n; i++) {
        if (arr[i] !== 0) answer++;
    }

    return answer;
};
test("findPrimeNum", () => {
    expect(solution(10)).toBe(4);
});