add kata
This commit is contained in:
33
5kyu/buddy-pairs/solution.ts
Normal file
33
5kyu/buddy-pairs/solution.ts
Normal file
@@ -0,0 +1,33 @@
|
||||
|
||||
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 [];
|
||||
}
|
||||
Reference in New Issue
Block a user