w3resource

JavaScript: Calculate the greatest common divisor between two or more numbers/arrays

JavaScript fundamental (ES6 Syntax): Exercise-223 with Solution

Write a JavaScript program to calculate the greatest common divisor between two or more numbers/arrays.

  • The inner _gcd function uses recursion.
  • Base case is when y equals 0. In this case, return x.
  • Otherwise, return the GCD of y and the remainder of the division x/y.

Sample Solution:

JavaScript Code:

//#Source https://bit.ly/2neWfJ2 
const gcd = (...arr) => {
  const _gcd = (x, y) => (!y ? x : gcd(y, x % y));
  return [...arr].reduce((a, b) => _gcd(a, b));
};
console.log(gcd(8, 36));
console.log(gcd(...[12, 8, 32]));

Sample Output:

4
4

Pictorial Presentation:

JavaScript Fundamental: Calculate the greatest common divisor between two or more numbers/arrays.

Flowchart:

flowchart: Calculate the greatest common divisor between two or more numbers/arrays.

Live Demo:

See the Pen javascript-basic-exercise-223-1 by w3resource (@w3resource) on CodePen.


Improve this sample solution and post your code through Disqus

Previous: Write a JavaScript program that initializes an array containing the numbers in the specified range where start and end are inclusive and the ratio between two terms is step. Returns an error if step equals 1.
Next: Write a JavaScript program to remove HTML/XML tags from string.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



JavaScript: Tips of the Day

Checking if a key exists in a JavaScript object?

Checking for undefined-ness is not an accurate way of testing whether a key exists. What if the key exists but the value is actually undefined?

var obj = { key: undefined };
obj["key"] !== undefined // false, but the key exists!

You should instead use the in operator:

"key" in obj // true, regardless of the actual value

If you want to check if a key doesn't exist, remember to use parenthesis:

!("key" in obj) // true if "key" doesn't exist in object
!"key" in obj   // ERROR!  Equivalent to "false in obj"

Or, if you want to particularly test for properties of the object instance (and not inherited properties), use hasOwnProperty:

obj.hasOwnProperty("key") // true

Checking for undefined-ness is not an accurate way of testing whether a key exists. What if the key exists but the value is actually undefined? var obj = { key: undefined }; obj["key"] !== undefined // false, but the key exists! You should instead use the in operator: "key" in obj // true, regardless of the actual value If you want to check if a key doesn't exist, remember to use parenthesis: !("key" in obj) // true if "key" doesn't exist in object !"key" in obj // ERROR! Equivalent to "false in obj" Or, if you want to particularly test for properties of the object instance (and not inherited properties), use hasOwnProperty: obj.hasOwnProperty("key") // true For performance comparison between the methods that are in, hasOwnProperty and key is undefined.

Ref: https://bit.ly/2CFNp1X