package com.thealgorithms.maths;
/**
* This is Euclid's algorithm which is used to find the greatest common
* denominator Overide function name gcd
*
* @author Oskar Enmalm 3/10/17
*/
public class GCD {
/**
* get greatest common divisor
*
* @param num1 the first number
* @param num2 the second number
* @return gcd
*/
public static int gcd(int num1, int num2) {
if (num1 < 0 || num2 < 0) {
throw new ArithmeticException();
}
if (num1 == 0 || num2 == 0) {
return Math.abs(num1 - num2);
}
while (num1 % num2 != 0) {
int remainder = num1 % num2;
num1 = num2;
num2 = remainder;
}
return num2;
}
/**
* get greatest common divisor in array
*
* @param number contains number
* @return gcd
*/
public static int gcd(int[] number) {
int result = number[0];
for (int i = 1; i < number.length; i++) { // call gcd function (input two value)
result = gcd(result, number[i]);
}
return result;
}
public static void main(String[] args) {
int[] myIntArray = { 4, 16, 32 };
// call gcd function (input array)
System.out.println(gcd(myIntArray)); // => 4
System.out.printf(
"gcd(40,24)=%d gcd(24,40)=%d%n",
gcd(40, 24),
gcd(24, 40)
); // => 8
}
}