문제(출처: 프로그래머스)

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

 

▶ 내가 푼 방식

function solution(n) {
    let answer = 0
    for(let i =0; i <=n; i ++){
        let cnt = 0
        for(let j =0; j<=i; j++){
            if (i%j==0){
                cnt +=1
            }
        }
        if(cnt >2){
            answer += 1       
        }
    }

    return answer;
}

 

 다른 유저가 푼 방식

// 유저 1
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
}

 

+ Recent posts