1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
|
public class GreatestCommonDivisor {
public static int euclidean(int a, int b){ int bigger = a > b ? a : b; int smaller = a > b ? b : a; if(bigger % smaller == 0){ return smaller; } return euclidean( bigger%smaller ,smaller); }
public static int morePhaseLoss(int a , int b){ if(a == b){ return a; } int smaller = a > b ? b : a; int bigger = a > b ? a : b; return morePhaseLoss(bigger - smaller , smaller); }
public static int gcd(int a , int b){ if( a==b){ return a; } if((a&1)==0 && (b&1) == 0){ return gcd(a>>1,b>>1)<<1; }else if((a&1)!=0 && (b&1) == 0){ return gcd(a,b>>1); }else if((a&1)==0 && (b&1) != 0){ return gcd(a>>1,b); }else { int smaller = a > b ? b : a; int bigger = a > b ? a : b; return gcd(bigger-smaller,smaller); } } public static void main(String[] args) { System.out.println(euclidean(25,10)); System.out.println(euclidean(100,80)); System.out.println(euclidean(27,14)); System.out.println(morePhaseLoss(25,10)); System.out.println(morePhaseLoss(100,80)); System.out.println(morePhaseLoss(27,14)); System.out.println(gcd(25,10)); System.out.println(gcd(100,80)); System.out.println(gcd(27,14));
}
}
|