let num = 8; // 약수를 찾기 위한 정수 설정
let result = []
let index = 1;
while (index <= num) {
if (num % index === 0) result.push(index)
index++
}
console.log(result) // [ 1, 2, 4, 8 ]
약수는 본인을 제외하고 num/2 보다 클 수 없기 때문에 절반 값 까지만 체크
let num = 8;
let result = []
let index = 1;
while (index <= num / 2) {
if (num % index === 0) result.push(index)
index++
}
result = [...result, num] // 본인 값 추가까지 추가
console.log(result) // [ 1, 2, 4, 8 ]
1 ~ num의 제곱근
범위로 num의 약수 구해num을 위의 약수로 나누었을때 값
역시 num의 약수num / 1번의 약수 === 1번의 약수
인거 제외 let num = 100;
let result = []
let index = 1;
while (index <= Math.sqrt(num)) {
if (num % index === 0) {
result.push(index)
if (num / index !== index) result.push(num / index)
}
index++
}
result.sort((a, b) => a - b)
console.log(result) // [ 1, 2, 4, 5, 10, 20, 25, 50, 100 ]
참조