求最大公约数方法的总结
来源:互联网 发布:双一流大学 知乎 编辑:程序博客网 时间:2024/04/30 16:25
一、欧几里得算法
int gcd(int a,int b){return b==0?a:gcd(b,a%b);}
二、Stein算法
对于很大的数,用高精度表示,用欧几里得算法的话大数除法比较麻烦。
用这个算法会比较简单,只用到除2与加减运算。
下面的代码摘自这个网址,罪过罪过^_^
http://www.blogjava.net/renyangok/archive/2007/12/15/167956.html
int gcd(int a,int b){
if(a<b){ //arrange so that a>b
int temp = a;
a = b;
b=temp;
}
if(0==b)//the base case
return a;
if(a%2==0 && b%2 ==0) //a and b are even
return 2*gcd(a/2,b/2);
if ( a%2 == 0) // only a is even
return gcd(a/2,b);
if ( b%2==0 ) // only b is even
return gcd(a,b/2);
return gcd((a+b)/2,(a-b)/2); // a and b are odd
}
求多个数的最大公约数就多用几次欧几里得吧。
- 求最大公约数方法的总结
- 求最大公约数的方法
- 求最小公倍数和最大公约数的总结
- 求两个数的最大公约数的方法
- 求最大公约数和最小公倍数的方法
- 求最小公倍数和最大公约数的方法
- 求最大公约数的两种方法
- 求最大公约数的两种方法
- 求最大公约数的两种方法
- 求最大公约数的三种方法
- 求最大公约数的几种方法
- 求最大公约数的两种方法
- 求最大公约数和最小公倍数的方法
- C++求最大公约数的三种方法
- 求两个数最大公约数的方法
- 求最大公约数的三种方法
- 求两个数最大公约数的方法
- java求最大公约数的两种方法
- 2010年最后一天电脑大比拼
- ural 1015 Test the Difference!
- 88888888888888
- webservice服务器端以及客户端调用的方法
- 个端口的漏洞
- 求最大公约数方法的总结
- SQL语句命令大全
- SQL语句功能
- acm例题
- VM虚拟机增加磁盘空间的扩容操作(little by little)
- Ubuntu下安装wicd网络管理工具
- 如何同步化本地svn库到googlecode
- 红旗软件是用中国人的互联网上公开源码的最简单的公有制零件组装出来的==其他公有制软件产品也如此==是零件组装的复杂品.
- 筑基Ajax