求最大公约数:欧几里德算法(即 辗转相除法 )
来源:互联网 发布:虚拟拍照是什么软件 编辑:程序博客网 时间:2024/05/16 01:04
定理:两个整数的最大公约数等于其中较小的那个数和两数相除余数的最大公约数。
证明:
a可以表示成a = kb + r(a,b,k,r皆为正整数,且
假设d是a,b的一个公约数,记作d|a,d|b,即a和b都可以被d整除。
而
因此d也是b, r=a mod b的公约数
则a/d=(kb+r)/d=kb/d+r/d , 其中k是一个整数,
进而得d|a.因此d也是a,b的公约数
因此(a,b)和(b,a mod b)的公约数是一样的,其最大公约数也必然相等,得证
求法:以小数除大数,如果能整除,那么小数就是所求的最大公约数.否则就用余数来除刚才的除数;再用这新除法的余数去除刚才的余数.依此类推,直到一个除法能够整除,这时作为除数的数就是所求的最大公约数.
#include<stdio.h>int main(){ int a=0,b=0,r=0; scanf("%d%d",&a,&b); while(a%b!=0) { r=a%b; a=b; b=r; } printf("%d",a/b); return 0;}
0 0
- 求最大公约数:欧几里德算法(即 辗转相除法 )
- 欧几里德算法(辗转相除法) 求最大公约数
- 求最大公约数-辗转相除法-欧几里德算法
- 欧几里德算法(辗转相除法)求最大公约数和最小公倍数
- C语言辗转相除法(欧几里德算法)求最大公约数
- 最大公约数欧几里德算法(辗转相除法)
- 欧几里德算法(辗转相除法):求两个整数最大公约数
- 欧几里德求最大公约数(辗转相除法)
- 两个数的最大公约数------欧几里德算法(辗转相除法)
- 数论-欧几里德算法(辗转相除法求最小公倍数)
- 求最大公因数:辗转相除法(欧几里德算法)
- 欧几里得算法 --- 辗转相除法求最大公约数
- HDU1019-欧几里德算法--辗转相除法解最大公约数&&最小公倍数
- C++算法 - 辗转相除法(求最大公约数)
- C语言辗转相除法求最大公约数(欧几里得算法)
- 欧几里得算法(辗转相除法)求最大公约数
- 辗转相除法(欧几里德算法)
- 欧几里德算法(辗转相除法)
- 王爽《汇编语言》实验10:编写子程序show_str
- Java学习笔记170324
- C语言3-23
- 计161_Problem Z: 切面条
- poj 2155 Matrix 二维树状数组
- 求最大公约数:欧几里德算法(即 辗转相除法 )
- (二)数据链路层
- SSL 1612——最优布线问题(最小生成树)
- codeforces 791D 树形dp 所有点对
- 小波去燥原理分析
- “100台机器,拟分四个周期使用,在每一周期有两种生产任务”问题
- Python3爬虫之入门和正则表达式
- [BZOJ4596][Shoi2016]黑暗前的幻想乡(容斥原理+矩阵树定理)
- java动态绑定在属性和方法上的不同