mirror of
https://github.com/TheAlgorithms/JavaScript.git
synced 2025-07-04 07:29:47 +08:00

* Add prettier config * test: add test to check for absolute function * chore: es5 to es6 * test: add test to check mean function * test: add test for sum of digit * test: add test for factorial * test: add test for fibonnaci * test: add test for find HCF * test: add test for lcm * test: add gridget test * test: add test for mean square error * test: add test for modular binary exponentiation * test: add tests for palindrome * test: add test for pascals triangle * test: add tests for polynomial * test: add tests for prime check * test: add tests for reverse polish notation * test: add tests for sieve of eratosthenes * test: add tests for pi estimation monte carlo method * chore: move tests to test folder * chore: fix standardjs errors
32 lines
738 B
JavaScript
32 lines
738 B
JavaScript
/*
|
|
author: redfly1
|
|
More about HCF:
|
|
https://en.wikipedia.org/wiki/Greatest_common_divisor
|
|
*/
|
|
|
|
const findHCF = (x, y) => {
|
|
// If the input numbers are less than 1 return an error message.
|
|
if (x < 1 || y < 1) {
|
|
return 'Please enter values greater than zero.'
|
|
}
|
|
|
|
// If the input numbers are not integers return an error message.
|
|
if (x !== Math.round(x) || y !== Math.round(y)) {
|
|
return 'Please enter whole numbers.'
|
|
}
|
|
|
|
// Now apply Euclid's algorithm to the two numbers.
|
|
while (Math.max(x, y) % Math.min(x, y) !== 0) {
|
|
if (x > y) {
|
|
x %= y
|
|
} else {
|
|
y %= x
|
|
}
|
|
}
|
|
|
|
// When the while loop finishes the minimum of x and y is the HCF.
|
|
return Math.min(x, y)
|
|
}
|
|
|
|
export { findHCF }
|