add: solution to project euler problem 23 md file (#38369)
This commit is contained in:
@ -67,7 +67,40 @@ sumOfNonAbundantNumbers(28123);
|
||||
<section id='solution'>
|
||||
|
||||
```js
|
||||
// solution required
|
||||
function abundantCheck(number) {
|
||||
let sum = 1;
|
||||
|
||||
for (let i = 2; i <= Math.sqrt(number); i += 1) {
|
||||
if(number % i === 0) {
|
||||
sum += i + +(i !== Math.sqrt(number) && number / i);
|
||||
}
|
||||
}
|
||||
return sum > number;
|
||||
}
|
||||
|
||||
function sumOfNonAbundantNumbers(n) {
|
||||
let sum = 0;
|
||||
const memo = {};
|
||||
let abundantList = [];
|
||||
|
||||
// Function checkSum checks if num can be represented as a sum of numbers in the stack (array)
|
||||
const checkSum = (num, stack, memo) => {
|
||||
for (let i = 0; i < stack.length; i += 1) {
|
||||
if ((num - stack[i]) in memo) return true;
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
for (let i = 1; i <= n; i += 1) {
|
||||
if (abundantCheck(i)) {
|
||||
abundantList.push(i);
|
||||
memo[i] = 1;
|
||||
}
|
||||
if (checkSum(i, abundantList, memo)) continue;
|
||||
sum += i;
|
||||
}
|
||||
return sum;
|
||||
}
|
||||
```
|
||||
|
||||
</section>
|
||||
|
Reference in New Issue
Block a user