programmers

[Programmers Level 1] 약수의 개수와 덧셈 Javascript

냠냠맨 2022. 11. 25. 15:14

문제정보

 

 

 

 

정수 두개가 주어지고 두 정수 사이의 수들의 합을 구하는 문제입니다.

그런데 약수의 개수가 홀수면 -를 해줘야하네요

 


 

예시

 

left	right	result
13	17	43
24	27	52

 

 


 

 

나의풀이

function solution(left, right) {
    let answer = 0
    for(i=left ; i <= right; i++) {
        let counter = 0
        for(j=1;j <= i; j++) {
            if(i % j == 0 ){
                counter++
            }
        }
        if(counter % 2 == 0) {
            answer += i
        }
        else {
            answer -= i
        }
    }
    return answer
}

for문을 중첩시켜 풀었습니다.

합성수 찾기와 유사한 문제인 것 같네요

 


 

 

다른사람의 풀이

function solution(left, right) {
    var answer = 0;
    for (let i = left; i <= right; i++) {
        if (Number.isInteger(Math.sqrt(i))) {
            answer -= i;
        } else {
            answer += i;
        }
    }
    return answer;
}

n의 제곱근이 정수라면 n의 약수의 개수는 홀수입니다.

띠용하네요..

 

반응형