求a,b最大公约数的最快算法
来源:互联网 发布:网络悲伤情歌 编辑:程序博客网 时间:2024/06/06 06:51
看到这道题最容易想到的是这个算法:
int fun(int a, int b){ int i; if(a<b)i=a; else i=b; for(;;i++){ if((a%i)==0&&(b%i)==0) return i; }}
很明显这是一个时间复杂度为O(n)的算法,很多地方可以优化。
经比较,最快的应该是欧几里得的辗转相除法:
设两数为a、b(a>b),求a和b最大公约数(a,b)的步骤如下:用a除以b,得a÷b=qr1(0≤r1)。若r1=0,则(a,b)=b;若r1≠0,则再用b除以r1,得b÷r1=qr2 (0≤r2).若r2=0,则(a,b)=r1,若r2≠0,则继续用r1除以r2,如此下去,直到能整除为止。其最后一个为被除数的余数的除数即为(a, b)。
例如,123456 和 7890 的最大公因子是 6,这可由下列步骤看出:
代码int fun(int a, int b){ if(b==0) return a; else return fun(b, a%b);}//迭代函数
阅读全文
1 0
- 求a,b最大公约数的最快算法
- 求a和b的最大公约数
- 求a和b的最大公约数
- codevs1212求A,B的最大公约数
- 求教一个算法,求两个数a,b的最大公约数,a,b大于0小于10的60次方,a,b从文件夹中读取。
- 求a和b的最大公约数和最小公倍数
- 求a与b的最大公约数与最小公倍数
- 求两个数a和b的最大公约数
- 求最大公约数的算法
- 求最大公约数的算法
- 求最大公约数的算法
- 求最大公约数的算法
- 求最大公约数的算法
- 求最大公约数的算法
- 求最大公约数的算法
- gcd(int a, int b) //求最大公约数
- [算法]求最大公约数的算法
- 求最大公约数的快速算法
- Hive 与 HBase 关系
- 基于dvwa的sql注入,使用fiddler修改请求参数
- String StringBuffer StringBuilder
- SDUT 2017 Autumn Single Contest O 周六场个人赛
- Java面向对象的五大原则
- 求a,b最大公约数的最快算法
- ViewPager
- Redis
- 使用shell 脚本递归删除项目中的所有源文件的行注释
- Dev ButtonEdit控件
- ubuntu配置nginx和php5.6
- Heroku+Wordpress
- eclipse修改复制web项目部署名字
- 智能蛇的学习心得