From e6f1a47b7790624d8081b64103fcea3c4f9c735a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ozan=20=C3=96zayranci?= <38402864+oozan@users.noreply.github.com> Date: Tue, 21 Jul 2026 19:05:27 +0300 Subject: [PATCH 1/2] perf: optimize aliquot sum calculation --- maths/aliquot_sum.ts | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) 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 From 81d6a48bfd0ad6f252184fb41befff3e8e36dadf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ozan=20=C3=96zayranci?= <38402864+oozan@users.noreply.github.com> Date: Tue, 21 Jul 2026 19:05:28 +0300 Subject: [PATCH 2/2] test: cover aliquot sum edge cases --- maths/test/aliquot_sum.test.ts | 3 +++ 1 file changed, 3 insertions(+) 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],