Greatest Common Divisor 最大公约数 O(n)

来源:互联网 发布:淘宝店铺运营培训班 编辑:程序博客网 时间:2024/06/11 15:58

不废话,直接上代码

package testAndfun;//great common divisorpublic class gcd {public static void main(String[] args){gcd g = new gcd();int[] input = {16,64,26,78};System.out.println(g.getGCD(input));}public int getGCD(int[] arr){if(arr==null||arr.length==0)return 0;if(arr.length==1)return arr[0];int res = arr[0];for(int i=1;i<arr.length;i++){if(arr[i]>0 && res > 0)res = helper(res,arr[i]);elsereturn 0;}return res;}//找到之前的最大公约数和数组下一个数的最大公约数static int helper(int m, int n){if(m % n == 0)return n;else{//如果不能整除,就用m%n往下接着求return helper(n, m%n);}}}


最重要的是运用了结论: gcd(m,n) = gcd(n , m%n);

0 0
原创粉丝点击