freeCodeCamp/guide/english/algorithms/greatest-common-divisor-euc.../index.md

75 lines
2.4 KiB
Markdown

---
title: Greatest Common Divisor Euclidean
---
## Greatest Common Divisor Euclidean
For this topic you must know about Greatest Common Divisor (GCD) and the MOD operation first.
#### Greatest Common Divisor (GCD)
The GCD of two or more integers is the largest integer that divides each of the integers such that their remainder is zero.
Example-
GCD of 20, 30 = 10 *(10 is the largest number which divides 20 and 30 with remainder as 0)*
GCD of 42, 120, 285 = 3 *(3 is the largest number which divides 42, 120 and 285 with remainder as 0)*
#### "mod" Operation
The mod operation gives you the remainder when two positive integers are divided.
We write it as follows-
`A mod B = R`
This means, dividing A by B gives you the remainder R, this is different than your division operation which gives you the quotient.
Example-
7 mod 2 = 1 *(Dividing 7 by 2 gives the remainder 1)*
42 mod 7 = 0 *(Dividing 42 by 7 gives the remainder 0)*
With the above two concepts understood you will easily understand the Euclidean Algorithm.
### Euclidean Algorithm for Greatest Common Divisor (GCD)
The Euclidean Algorithm finds the GCD of 2 numbers.
You will better understand this Algorithm by seeing it in action.
Assuming you want to calculate the GCD of 1220 and 516, lets apply the Euclidean Algorithm-
Assuming you want to calculate the GCD of 1220 and 516, lets apply the Euclidean Algorithm-
![Euclidean Example](https://i.imgur.com/aa8oGgP.png)
Pseudo Code of the Algorithm-
Step 1: **Let `a, b` be the two numbers**
Step 2: **`a mod b = R`**
Step 3: **Let `a = b` and `b = R`**
Step 4: **Repeat Steps 2 and 3 until `a mod b` is greater than 0**
Step 5: **GCD = b**
Step 6: Finish
Javascript Code to Perform GCD-
```javascript
function gcd(a, b) {
var R;
while ((a % b) > 0) {
R = a % b;
a = b;
b = R;
}
return b;
}
```
Javascript Code to Perform GCD using Recursion-
```javascript
function gcd(a, b) {
if (b == 0)
return a;
else
return gcd(b, (a % b));
}
```
You can also use the Euclidean Algorithm to find GCD of more than two numbers.
Since, GCD is associative, the following operation is valid- `GCD(a,b,c) == GCD(GCD(a,b), c)`
Calculate the GCD of the first two numbers, then find GCD of the result and the next number.
Example- `GCD(203,91,77) == GCD(GCD(203,91),77) == GCD(7, 77) == 7`
You can find GCD of `n` numbers in the same way.