정수 n의 약수를 모두 더한 값 반환하기 (0 <= n <= 3000)
기본 for 반복문 풀이(1~n) - 나머지가 0이면 약수.
function solution(n) {
var answer = 0;
for (let i=1; i<=n; i++) {
if (n%i===0) answer += i;
}
return answer;
}
n의 약수는 본인을 제외하고 n/2보다 클 수 없으니 1~n이 아닌 1~n/2까지 확인
function solution(n) {
var answer = 0;
for (let i=1; i<=n/2; i++) {
if (n%i===0) answer += i;
}
return answer+n;
}
const getDivisors = (num) => {
const divisors = [];
for(let i = 1 ; i <= num/2 ; i++){
if(num % i === 0) divisors.push(i);
}
return [...divisors, num];
}
출처: https://mine-it-record.tistory.com/522 [나만의 기록들:티스토리]
제곱근(Math.sqrt()
를 메서드 사용)까지만 for 반복문 순회하기. 대신 나눠서 나오는 값 역시 약수이므로 같이 더해줘야 한다.
const getDivisors = (num) => {
const divisors = [];
for(let i = 1 ; i <= Math.sqrt(num) ; i++){
if(num % i === 0) {
divisors.push(i);
if(num / i != i) divisors.push(num / i);
}
}
// divisors.sort((a, b) => a - b);
return divisors;
}
출처: https://mine-it-record.tistory.com/522 [나만의 기록들:티스토리]