mirror of
https://github.com/TheAlgorithms/JavaScript.git
synced 2025-07-04 15:39:42 +08:00
fix: cleanup CoPrimeCheck
(#1609)
This commit is contained in:
@ -28,13 +28,13 @@ const GetEuclidGCD = (arg1, arg2) => {
|
||||
const CoPrimeCheck = (firstNumber, secondNumber) => {
|
||||
// firstly, check that input is a number or not.
|
||||
if (typeof firstNumber !== 'number' || typeof secondNumber !== 'number') {
|
||||
return new TypeError('Argument is not a number.')
|
||||
throw new TypeError('Argument is not a number.')
|
||||
}
|
||||
/*
|
||||
This is the most efficient algorithm for checking co-primes
|
||||
if the GCD of both the numbers is 1 that means they are co-primes.
|
||||
*/
|
||||
return GetEuclidGCD(firstNumber, secondNumber) === 1
|
||||
return GetEuclidGCD(Math.abs(firstNumber), Math.abs(secondNumber)) === 1
|
||||
}
|
||||
|
||||
export { CoPrimeCheck }
|
||||
|
29
Maths/test/CoPrimeCheck.test.js
Normal file
29
Maths/test/CoPrimeCheck.test.js
Normal file
@ -0,0 +1,29 @@
|
||||
import { CoPrimeCheck } from '../CoPrimeCheck'
|
||||
|
||||
describe('CoPrimeCheck', () => {
|
||||
it.each([
|
||||
[1, 1],
|
||||
[1, 2],
|
||||
[1, 3],
|
||||
[1, 7],
|
||||
[20, 21],
|
||||
[5, 7],
|
||||
[-5, -7]
|
||||
])('returns true for %j and %i', (inputA, inputB) => {
|
||||
expect(CoPrimeCheck(inputA, inputB)).toBe(true)
|
||||
expect(CoPrimeCheck(inputB, inputA)).toBe(true)
|
||||
})
|
||||
|
||||
it.each([
|
||||
[5, 15],
|
||||
[13 * 17 * 19, 17 * 23 * 29]
|
||||
])('returns false for %j and %i', (inputA, inputB) => {
|
||||
expect(CoPrimeCheck(inputA, inputB)).toBe(false)
|
||||
expect(CoPrimeCheck(inputB, inputA)).toBe(false)
|
||||
})
|
||||
|
||||
it('should throw when any of the inputs is not a number', () => {
|
||||
expect(() => CoPrimeCheck('1', 2)).toThrowError()
|
||||
expect(() => CoPrimeCheck(1, '2')).toThrowError()
|
||||
})
|
||||
})
|
Reference in New Issue
Block a user