// 석우님의 풀이
function solution(left, right) {
// 주어진 숫자의 약수를 구해 반환하는 함수
function 약수(num) {
const result = [];
for (let i = 1; i <= num; i++) {
if(num % i === 0) {
result.push(i);
}
}
return result;
}
// left부터 right까지의 숫자 생성
const 대상 = new Array(right - left + 1).fill().map((number, index) => left + index);
console.log(대상)
return 대상.reduce((acc, number) => {
if (약수(number).length % 2 === 0) {
acc += number;
} else {
acc -= number;
}
return acc;
}, 0);
}
// 성진님의 풀이
function solution(left, right) {
var answer = 0;
function divisorNum (n){
let num = 0;
for(let i=1; i<= Math.sqrt(n); i++){
if(n % i === 0 && i === Math.sqrt(n)){
num += 1
}
else if(n % i ===0){
num += 2
}
}
return num;
}
///// 약수 구해주는 함수 끝
for(let i= left; i<= right; i++){
if(divisorNum(i) % 2 === 0) answer += i
else if(divisorNum(i) % 2 !== 0) answer -= i
}
return answer;
}
// 도영님의 풀이
function solution(left, right) {
var answer = 0;
const num = right - left + 1 //갯수
let cnt = 0; //약수의 갯수
for(let i = 0; i < num ; i++){
for(let j = 1; j <= left; j++){
if(left % j === 0){
cnt++
} //left에서 약수의 갯수를 계산
}
//약수에 갯수에 따라서 덧셈, 뺄셈을 진행
cnt % 2 === 0 ? answer += left : answer -= left
//다음 값을 탐색하기 위해 left에 1을 더하고, cnt를 0으로 초기화
left++
cnt = 0
}
return answer;
}
// 윤정님의 풀이
function solution(left,right){
let sum = 0;
for(i=left;i<=right;i++){
let count=0;
for(j=1;j<=i;j++){
if(i%j===0){
count++
}
}
if(count%2===0){
sum += i;
}else{
sum-=i;
}
}
return sum
}
// 민승님의 풀이
function solution(left,right){
var answer = 0;
for(let i=left;i<=right;i++){
let count = 0;
for(let j=1;j<=i;j++){
if (i%j ===0){
count++
}
} count%2===0?answer+=i:answer-=i;
}
return answer