const properDivisors = (n: number): number[] => { const divs: number[] = []; for (let i = 1; i <= Math.sqrt(n); i++) { if (n % i === 0) { divs.push(i); const otherDivisor = n / i; if (otherDivisor !== i && otherDivisor !== n) { divs.push(otherDivisor); } } } return divs; } const sumOfDivisors = (n: number): number => { const divs = properDivisors(n) return divs.reduce((acc, div) => acc + div, 0); } export function buddy(start: number, limit: number): number[] { for (let n = start; n <= limit; n++) { const sumN = sumOfDivisors(n); const m = sumN - 1; const sumM = sumOfDivisors(m); if (m > n && sumM === n + 1) { return [n, m]; } } return []; }