【经典算法】:欧几里得算法求最大公约数
来源:互联网 发布:知其雄守其雌曾国藩 编辑:程序博客网 时间:2024/06/05 02:20
前言
欧几里得算法就是一个叫做欧几里得的数学家提出来的一种算法用来可以计算两个数的最大的公约数,和最简单的那种枚举不同,这种算法有种巧妙的计算。
当然,我们不是数学家,只是计算机从业者,因此对于算法的详细证明就不说了,就只写写简单的算法
算法核心
算法 gcd(m,n) = gcd(n,m%n); 反复利用这个公式,建立的前提是m>n;
最后结束的条件是 n ==0 ;
代码实现
这里有递归和非递归版本
递归版本:
//// 欧几里得算法求最大公约数#include <iostream>using namespace std;int gcd(int a,int b){ if(a<b){ int temp = a; a = b; b = temp; } if(b==0) return a; //结束条件 else return gcd(b,a%b);}int main(){ int a,b; cin>>a>>b; cout<<gcd(a,b);}
非递归版本
#include <iostream>using namespace std;int gcd(int m,int n){ if(m<n){ int temp = m; m = n; n = temp; } while(n>0){ //当n == 0 时结果一定能够被计算出来 int temp = m%n; m = n; n = temp; } return m;}int main(){ int a,b; cin>>a>>b; cout<<gcd(a,b)<<endl;}
1 0
- 【经典算法】:欧几里得算法求最大公约数
- 【递归经典题目】欧几里得算法求最大公约数
- 欧几里得算法求最大公约数
- 欧几里得算法求最大公约数
- 欧几里得算法 求最大公约数
- 用欧几里得算法求最大公约数
- java欧几里得算法求最大公约数
- 求最大公约数(欧几里得算法)
- 求最大公约数(欧几里得算法)
- 欧几里得算法(求最大公约数)
- 求最大公约数算法(欧几里得算法)的实现!!!
- 欧几里得算法——求最大公约数
- 欧几里得算法求最大公约数(九度刷题)
- 筛法求素数,欧几里得算法求最大公约数
- 欧几里得算法 --- 辗转相除法求最大公约数
- HDOJ 最小公倍数(欧几里得算法求最大公约数)
- 数据结构--求最大公约数(欧几里得算法)
- 欧几里得算法求两个数的最大公约数
- TP 上传
- 邂逅时光,感恩岁月
- 天翼短信发送三方接口对接
- nginx rewrite if指令剖析
- Android性能优化之如何避免Overdraw
- 【经典算法】:欧几里得算法求最大公约数
- 深拷贝与浅拷贝的解析 (学习日记)
- 能ping通但是不能访问工作组
- d
- angularjs+requirejs按需加载
- 操作系统实验,IPC(2): reader and writer, 读者和写者问题
- DLL在Qt中的创建与使用
- git学习笔记-2
- Google Chrome扩展(Extensions)和插件(plugins)的区别