diff --git a/maths/aliquot_sum.ts b/maths/aliquot_sum.ts index 0cfeb1db..47a26cbb 100644 --- a/maths/aliquot_sum.ts +++ b/maths/aliquot_sum.ts @@ -17,10 +17,17 @@ export const aliquotSum = (num: number): number => { if (num < 0) throw new TypeError('Input cannot be negative') if (!Number.isInteger(num)) throw new TypeError('Input cannot be a decimal') - let sum = 0 + if (num <= 1) return 0 - for (let i = 1; i <= num / 2; i++) { - if (num % i === 0) sum += i + let sum = 1 + + for (let divisor = 2; divisor <= num / divisor; divisor++) { + if (num % divisor === 0) { + sum += divisor + + const pairedDivisor = num / divisor + if (pairedDivisor !== divisor) sum += pairedDivisor + } } return sum diff --git a/maths/test/aliquot_sum.test.ts b/maths/test/aliquot_sum.test.ts index 258b5f69..09b046bf 100644 --- a/maths/test/aliquot_sum.test.ts +++ b/maths/test/aliquot_sum.test.ts @@ -1,6 +1,9 @@ import { aliquotSum } from '../aliquot_sum' test.each([ + [0, 0], + [1, 0], + [2, 1], [15, 9], [18, 21], [28, 28],