c++求最小公倍数和最小公约数
2024-08-27 16:54:02
方法一:辗转相除法(欧几里得 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);
}
最新文章
- 如何在VMware中安装Windows Phone SDK 8.0 (支持模拟器调试)
- oracle 开窗分析函数和树形结构
- 1.ARM的基础知识
- Elasticsearch——multi termvectors的用法
- redis理解
- 12个css高级技巧.html
- 导航代码position:relative
- 我的ECshop二次开发从零开始
- Ext.tree.Panel Extjs 在表格中添加树结构,并实现节点移动功能
- SQL Server dbcc checkdb 修复
- IOS UI 第八篇:基本UI
- 关于socket通讯,如何才能高效?
- 转:HTML错误编号大全
- [HNOI2012]永无乡
- Django与Celery配合实现定时任务
- Centos7快速部署saltstack
- python之路---模块
- hdu 5195 线段树
- Android基础笔记(九)- 广播
- WCF: Retry when service is in fault state.