33 lines
738 B
TypeScript
33 lines
738 B
TypeScript
|
|
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 [];
|
|
} |