转载:https://www.cnblogs.com/hexiaochun/archive/2012/09/03/2668250.html
今天研究了一下最大公约数的求法,在网上也找了不同的解法,现在就想总结一下,拿出来分享给大家,共同 学习
首先讲一个什么是公约数,这个问题我们小学都学过,可能有一部分人已经忘记了,所以还是讲一下,假设有两个数a,b,所谓的公约数就是能把a,b整除的最大整数。明白了要求我们就来解决问题,一拿到问题我们都应该都能想到一个方法,就是使用穷举法,从2开始一个个找,到一个两个都能除的就记录起来,一直找到小于min(a,b)结束,记录到的值就是他们的最大公约数代码由下: 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 | //找出最大公约数,穷举法 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; } |
01 02 03 04 05 06 07 08 09 10 11 12 | 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); } |