两种方法求最大公约数
2017-10-07 15:40
260 查看
之前求最大公约数只知道最经典的辗转相除法:
在学习完分治法之后又学会了一种利用分治法求解的方法:
公式如下:
gcd(a,b)= * 2gcd(a/2,b/2) a,b都是偶数
* gcd(a,b/2) a是奇数,b是偶数
* gcd(a/2,b) a是偶数,b是奇数
* gcd((a-b)/2,b) a,b都是偶数
private static int gcd_1(int a,int b){//辗转相除法 int temp=0; while(a>0){ temp=b%a; b=a; a=temp; } return b; }
在学习完分治法之后又学会了一种利用分治法求解的方法:
公式如下:
gcd(a,b)= * 2gcd(a/2,b/2) a,b都是偶数
* gcd(a,b/2) a是奇数,b是偶数
* gcd(a/2,b) a是偶数,b是奇数
* gcd((a-b)/2,b) a,b都是偶数
private static int gcd(int a, int b) { if(a%b==0){ return b>0?b:-b; } if(b%a==0){ return a>0?a:-a; } if(a%2==0 && b%2==0){ return 2*gcd(a/2,b/2); }else if(a%2==1 && b%2==0){ return gcd(a,b/2); }else if(a%2==0 && b%2==1){ return gcd(a/2,b); }else{ return gcd((a-b)/2,b); } }
相关文章推荐
- 两种方法求最大公约数和最小公倍数
- c 语言 求最大公约数 最小公倍数 两种方法:
- 两种方法求最大公约数最小公倍数
- 求最大公约数两种方法
- 求最大公约数的两种方法
- 两种方法求最大公约数最小公倍数
- 求a,b两数的最大公约数的两种方法
- 两种方法求两个数的最大公约数和最小公倍数--C语言
- 求最大公约数两种方法
- java求最大公约数的两种方法
- 求两个数的最大公约数两种方法
- 求最大公约数的两种方法
- 探究如何求两数的最大公约数(两种方法)
- 求最大公约数的两种方法
- 两种方法求最大公约数和最小公倍数
- Qt播放PCM音频(裸流)文件的两种方法
- Json返回时间中出现乱码问题的两种解决方法
- 在Java中实现线程的两种方法
- 实现TabHost的两种方法
- 遍历HashTable的两种方法