java 算法基础之一寻找最大公约数
最近发现在搞Android的都要懂一点数据结构和算法才能进阶到高手,所以就回去复习了一下基础,为一些公司招聘做题做准备。
今天研究了一下最大公约数的求法,在网上也找了不同的解法,现在就想总结一下,拿出来分享给大家,共同 学习
首先讲一个什么是公约数,这个问题我们小学都学过,可能有一部分人已经忘记了,所以还是讲一下,假设有两个数a,b,所谓的公约数就是能把a,b整除的最大整数。
明白了要求我们就来解决问题,一拿到问题我们都应该都能想到一个方法,就是使用穷举法,从2开始一个个找,到一个两个都能除的就记录起来,一直找到小于min(a,b)结束,
记录到的值就是他们的最大公约数代码由下:
//找出最大公约数,穷举法 public static int getMaxDivide_ab(int a,int b){ int value=1; int max; int min; if(a==b){ return a; } if(a>b){ max=a; min=b; }else{ max=b; min=a; } for(int i=2;i<min;i++){ if(0==max%i && 0==min%i){ value=i; } } return value; }public static int oujilide(int a,int b){ if(a<b){ int temp; temp=a; a=b; b=temp; } if(0==b){ return a; } return oujilide(b,a%b); }