mirror of
https://github.com/TheAlgorithms/Java.git
synced 2025-07-19 01:41:57 +08:00
update gcd
This commit is contained in:
36
Maths/GCDRecursion.java
Normal file
36
Maths/GCDRecursion.java
Normal file
@ -0,0 +1,36 @@
|
||||
package Maths;
|
||||
|
||||
/**
|
||||
* @author https://github.com/shellhub/
|
||||
*/
|
||||
public class GCDRecursion {
|
||||
public static void main(String[] args) {
|
||||
System.out.println(gcd(20, 15)); /* output: 5 */
|
||||
System.out.println(gcd(10, 8)); /* output: 2 */
|
||||
System.out.println(gcd(gcd(10, 5), gcd(5, 10))); /* output: 5 */
|
||||
}
|
||||
|
||||
/**
|
||||
* get greatest common divisor
|
||||
*
|
||||
* @param a the first number
|
||||
* @param b the second number
|
||||
* @return gcd
|
||||
*/
|
||||
public static int gcd(int a, int b) {
|
||||
|
||||
if (a < 0 || b < 0) {
|
||||
throw new ArithmeticException();
|
||||
}
|
||||
|
||||
if (a == 0 || b == 0) {
|
||||
return Math.abs(a - b);
|
||||
}
|
||||
|
||||
if (a % b == 0) {
|
||||
return b;
|
||||
} else {
|
||||
return gcd(b, a % b);
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user