diff --git a/Maths/FriendlyNumbers.js b/Maths/FriendlyNumbers.js index f7440384b4..e52415466d 100644 --- a/Maths/FriendlyNumbers.js +++ b/Maths/FriendlyNumbers.js @@ -29,7 +29,7 @@ function abundancyIndex(number) { function sumDivisors(number) { let runningSumDivisors = number - for (let i = 0; i < number / 2; i++) { + for (let i = 1; i <= number / 2; i++) { if (Number.isInteger(number / i)) { runningSumDivisors += i } diff --git a/Maths/test/FriendlyNumbers.test.js b/Maths/test/FriendlyNumbers.test.js new file mode 100644 index 0000000000..7f9e15389e --- /dev/null +++ b/Maths/test/FriendlyNumbers.test.js @@ -0,0 +1,21 @@ +import { FriendlyNumbers } from '../FriendlyNumbers' + +describe('FriendlyNumbers', () => { + it('should return true for the perfect-number pair 6 and 28', () => { + expect(FriendlyNumbers(6, 28)).toBe(true) + }) + + it('should return true for the friendly pair 30 and 140', () => { + expect(FriendlyNumbers(30, 140)).toBe(true) + }) + + it('should return false for numbers with different abundancy', () => { + expect(FriendlyNumbers(15, 20)).toBe(false) + }) + + it('should throw for invalid input', () => { + expect(() => FriendlyNumbers(6, 6)).toThrow() + expect(() => FriendlyNumbers(0, 5)).toThrow() + expect(() => FriendlyNumbers(1.5, 5)).toThrow() + }) +})