Tell us what’s happening:
I understand, that a nested for loop is not going to work, But I still do not understand how to do it the other way. Thanks in advance for letting me know.
Your code so far
function findDivisors(number) {
let resultArray = [];
for (let i = 1; i < number; ++i) {
if (number % i === 0) {
resultArray.push(i);
}
}
return resultArray;
}
function CheckIfAmicablePair(number1, number2) {
return findDivisors(number1).reduce((acc, curr) => acc + curr) === number2 && findDivisors(number2).reduce((acc, curr) => acc + curr) === number1
}
function amicablePairsUpTo(maxNum) {
let arrayResult = [];
for (let i = 2; i < maxNum; ++i) {
for (let j = 2; j < maxNum; ++j) {
if (i != j && CheckIfAmicablePair(i, j)) {
arrayResult.push([i, j]);
}
}
}
return arrayResult;
}
console.log(amicablePairsUpTo(20000))
Your browser information:
User Agent is: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.183 Safari/537.36
.
Challenge: Amicable pairs
Link to the challenge: