합성수 찾기

도비김·2024년 2월 28일
0

Programmers | lv.0 입문

목록 보기
59/101
문제 설명

약수의 개수가 세 개 이상인 수를 합성수라고 합니다. 자연수 n이 매개변수로 주어질 때 n이하의 합성수의 개수를 return하도록 solution 함수를 완성해주세요.


제한사항
  • 1 ≤ n ≤ 100

입출력 예
n result
10 5
15 8

입출력 예 설명

입출력 예 #1

  • 10 이하 합성수는 4, 6, 8, 9, 10 로 5개입니다. 따라서 5를 return합니다.

입출력 예 #1

  • 15 이하 합성수는 4, 6, 8, 9, 10, 12, 14, 15 로 8개입니다. 따라서 8을 return합니다.

solution

gg

function solution(n) {
  return Array(n).fill().map((_, i) => i + 1).filter((i) => {
      let cnt = 0;
      for (let j = 1; j <= i; j++) {
        if (i % j === 0) cnt++;
      }
      return cnt >= 3;
    }).length;
}

function solution(n) {
    let dp = new Array(n+1).fill(1)
    for(let i = 2 ; i <= n ; i++){
        if(dp[i]){
            for(let j = 2 ; i*j <= n ; j++){
                dp[i*j] = 0
            }
        }
    }
    return dp.filter(el => el === 0).length
}

function solution(n) {
    let count = 0;
    let tar = 3;
    while (tar++<n) {
        for (let i = 2; i <= Math.sqrt(tar); i++) {
            if (tar%i===0) {
                count++;
                break;
            }
        }
    }
    return count;
}
profile
To Infinity, and Beyond!

0개의 댓글