v1
5/17/2021 by jamiec -00
Setup HTML - click to add setup HTML
disable setup JavaScript
Setup JavaScript
const maxNum = 1300
delete caserun single casemove downdrag and drop case


ready



for(let num1 = 3; num1 < maxNum ; num1++) {
  for(let num2 = 3; num2 < num1; num2++) {
  
  	let sum1 = 1, sum2 = 1

    for (let div1 = 2; div1 < num1; div1++) {
        if (num1 % div1 === 0) {
            sum1 += div1
        }
    }

    for (let div2 = 2; div2 < num2; div2++) {
        if (num2 % div2 === 0) {
            sum2 += div2
        }
    }

    if (num1 === sum2 && sum1 === num2 && num1 !== num2) {
        console.log(num1 + " and " + num2 + " are amicable numbers!")

    }
  }
}
delete caserun single casemove updrag and drop case


ready



const sumDivisors = num => {
  let res = 0;
  for(let i=1;i<num;i++)
    if( (num % i) == 0)
      res += i
  return res;
}

var divisors = new Array(maxNum).fill(0).map( (_,i) => i)
                              .reduce( (acc,num) => ({...acc, [num]: sumDivisors(num)}))
var amicable = Object.entries(divisors)
                     .filter( ([num,sum]) => num < sum && divisors[sum] == num);

for(let [num1,num2] of amicable)
  console.log(num1 + " and " + num2 + " are amicable numbers!")
Test Case - click to add another test case
Teardown JS - click to add teardown JavaScript
Output (DOM) - click to monitor output (DOM) while test is running
RUN