Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 2 additions & 13 deletions Maths/CoPrimeCheck.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,7 @@
is coprime with b.
*/

// Here we use a GetEuclidGCD method as a utility.
const GetEuclidGCD = (arg1, arg2) => {
let less = arg1 > arg2 ? arg2 : arg1
for (less; less >= 2; less--) {
if (arg1 % less === 0 && arg2 % less === 0) return less
}
return less
}
import { GetEuclidGCD } from './GetEuclidGCD'

// CoPrimeCheck function return the boolean in respect of the given number is co-prime or not.
/**
Expand All @@ -26,15 +19,11 @@ const GetEuclidGCD = (arg1, arg2) => {
* @returns return correspond boolean value, if both number are co-prime return `true`, else return `false`.
*/
const CoPrimeCheck = (firstNumber, secondNumber) => {
// firstly, check that input is a number or not.
if (typeof firstNumber !== 'number' || typeof secondNumber !== '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(Math.abs(firstNumber), Math.abs(secondNumber)) === 1
return GetEuclidGCD(firstNumber, secondNumber) === 1
}

export { CoPrimeCheck }
8 changes: 6 additions & 2 deletions Maths/test/CoPrimeCheck.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,19 @@ describe('CoPrimeCheck', () => {
[1, 7],
[20, 21],
[5, 7],
[-5, -7]
[-5, -7],
[1, 0],
[-1, 0]
])('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]
[13 * 17 * 19, 17 * 23 * 29],
[2, 0],
[0, 0]
])('returns false for %j and %i', (inputA, inputB) => {
expect(CoPrimeCheck(inputA, inputB)).toBe(false)
expect(CoPrimeCheck(inputB, inputA)).toBe(false)
Expand Down