mirror of
https://github.com/TheAlgorithms/JavaScript.git
synced 2025-07-04 15:39:42 +08:00
fix: GetEuclidGCD(0, 0)
is 0
(#1621)
This commit is contained in:
@ -8,7 +8,6 @@ export function GetEuclidGCD(a, b) {
|
||||
if (typeof a !== 'number' || typeof b !== 'number') {
|
||||
throw new TypeError('Arguments must be numbers')
|
||||
}
|
||||
if (a === 0 && b === 0) return undefined // infinitely many numbers divide 0
|
||||
a = Math.abs(a)
|
||||
b = Math.abs(b)
|
||||
while (b !== 0) {
|
||||
|
@ -1,12 +1,22 @@
|
||||
import { GetEuclidGCD } from '../GetEuclidGCD'
|
||||
|
||||
function testEuclidGCD(n, m, expected) {
|
||||
test('Testing on ' + n + ' and ' + m + '!', () => {
|
||||
expect(GetEuclidGCD(n, m)).toBe(expected)
|
||||
describe('GetEuclidGCD', () => {
|
||||
it.each([
|
||||
[5, 20, 5],
|
||||
[109, 902, 1],
|
||||
[290, 780, 10],
|
||||
[104, 156, 52],
|
||||
[0, 100, 100],
|
||||
[-5, 50, 5],
|
||||
[0, 0, 0],
|
||||
[1, 1234567, 1]
|
||||
])('returns correct result for %i and %j', (inputA, inputB, expected) => {
|
||||
expect(GetEuclidGCD(inputA, inputB)).toBe(expected)
|
||||
expect(GetEuclidGCD(inputB, inputA)).toBe(expected)
|
||||
})
|
||||
}
|
||||
|
||||
testEuclidGCD(5, 20, 5)
|
||||
testEuclidGCD(109, 902, 1)
|
||||
testEuclidGCD(290, 780, 10)
|
||||
testEuclidGCD(104, 156, 52)
|
||||
it('should throw when any of the inputs is not a number', () => {
|
||||
expect(() => GetEuclidGCD('1', 2)).toThrowError()
|
||||
expect(() => GetEuclidGCD(1, '2')).toThrowError()
|
||||
})
|
||||
})
|
||||
|
Reference in New Issue
Block a user