For example, the GCD of 8 and 12 is 4.
package basics; public class GCD { public static long gcdRecursive(long a, long b) { if (a == 0) return b; if (b == 0) return a; if (a > b) return gcdRecursive(b, a % b); return gcdRecursive(a, b % a); } public static long gcdIterative(long m, long n) { while ( m!=0 && n != 0 ) { long remainder = m % n; m = n; n = remainder; } return m+n; } public static void main(String[] args) { System.out.println("Recursive GCD of 50 and 0 = "+gcdRecursive(50,0)); System.out.println("Recursive GCD of 0 and 50 = "+gcdRecursive(0,50)); System.out.println("Recursive GCD of 50 and 10 = "+gcdRecursive(50,10)); System.out.println("Recursive GCD of 40 and 9 = "+gcdRecursive(40,9)); System.out.println("Recursive GCD of 8 and 12 = "+gcdRecursive(8,12)); System.out.println(); System.out.println("Iterative GCD of 50 and 0 = "+gcdIterative(50,0)); System.out.println("Iterative GCD of 0 and 50 = "+gcdIterative(0,50)); System.out.println("Iterative GCD of 50 and 10 = "+gcdIterative(50,10)); System.out.println("Iterative GCD of 40 and 9 = "+gcdIterative(40,9)); System.out.println("Iterative GCD of 8 and 12 = "+gcdRecursive(8,12)); } }
Create a GCD.java file in your workspace.
When the main method inside the GCD class executed it is going to print :
Recursive GCD of 50 and 0 = 50
Recursive GCD of 0 and 50 = 50
Recursive GCD of 50 and 10 = 10
Recursive GCD of 40 and 9 = 1
Recursive GCD of 8 and 12 = 4
Iterative GCD of 50 and 0 = 50
Iterative GCD of 0 and 50 = 50
Iterative GCD of 50 and 10 = 10
Iterative GCD of 40 and 9 = 1
Iterative GCD of 8 and 12 = 4
References :
Wikipedia = Greatest Common Divisor
No comments:
Post a Comment