方法一:辗转相除法(欧几里得 Euclidean)

  用“较大数”除以“较小数”,再用较小数除以第一余数,再用第一余数除以第二余数;

反复直到余数为零为止。

#include<iostream>
#include<algorithm>
using namespace std;

/*其计算原理依赖于下面的定理:

定理:gcd(a,b) = gcd(b,a mod b)

证明:a可以表示成a = kb + r,则r = a mod b 
假设d是a,b的一个公约数,则有 
d|a, d|b,而r = a - kb,因此d|r 
因此d是(b,a mod b)的公约数

假设d 是(b,a mod b)的公约数,则 
d | b , d |r ,但是a = kb +r 
因此d也是(a,b)的公约数

因此(a,b)和(b,a mod b)的公约数是一样的,其最大公约数也必然相等,得证
using namespace std;
*/

int gcd(int a,int b)
{
if(b == )
return a;
return gcd(b,a%b);
} int main()
{
int a, b; cin>>a>>b;
int c = gcd(a,b);
printf("%d",c);

最新文章

  1. 如何在VMware中安装Windows Phone SDK 8.0 (支持模拟器调试)
  2. oracle 开窗分析函数和树形结构
  3. 1.ARM的基础知识
  4. Elasticsearch——multi termvectors的用法
  5. redis理解
  6. 12个css高级技巧.html
  7. 导航代码position:relative
  8. 我的ECshop二次开发从零开始
  9. Ext.tree.Panel Extjs 在表格中添加树结构,并实现节点移动功能
  10. SQL Server dbcc checkdb 修复
  11. IOS UI 第八篇:基本UI
  12. 关于socket通讯,如何才能高效?
  13. 转:HTML错误编号大全
  14. [HNOI2012]永无乡
  15. Django与Celery配合实现定时任务
  16. Centos7快速部署saltstack
  17. python之路---模块
  18. hdu 5195 线段树
  19. Android基础笔记(九)- 广播
  20. WCF: Retry when service is in fault state.

热门文章

  1. git reflog
  2. IFNULL和isnull用法
  3. window炫丽cmd的别名cmder
  4. 【Linux】磁盘读写 测试
  5. BOOST 线程完全攻略
  6. [转]Docker中的镜像
  7. 【OpenFOAM案例】01 elbow
  8. Fluent动网格【12】:扩散光顺
  9. [MySQL TroubleShooting] 服务启动报错
  10. netMarketing类库: 类库说明