Skip to content

Commit e6f1a47

Browse files
committed
perf: optimize aliquot sum calculation
1 parent 19b4ced commit e6f1a47

1 file changed

Lines changed: 10 additions & 3 deletions

File tree

maths/aliquot_sum.ts

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,17 @@ export const aliquotSum = (num: number): number => {
1717
if (num < 0) throw new TypeError('Input cannot be negative')
1818
if (!Number.isInteger(num)) throw new TypeError('Input cannot be a decimal')
1919

20-
let sum = 0
20+
if (num <= 1) return 0
2121

22-
for (let i = 1; i <= num / 2; i++) {
23-
if (num % i === 0) sum += i
22+
let sum = 1
23+
24+
for (let divisor = 2; divisor <= num / divisor; divisor++) {
25+
if (num % divisor === 0) {
26+
sum += divisor
27+
28+
const pairedDivisor = num / divisor
29+
if (pairedDivisor !== divisor) sum += pairedDivisor
30+
}
2431
}
2532

2633
return sum

0 commit comments

Comments
 (0)