我的编程学习日志(12)--求最大公约数,最小公倍数
2014-09-24 22:00
330 查看
求最大公约数最基本的方法就是,用一个数每次加1,除这两个数。
最小公倍数就是两个数除以最大公约数的商相乘,再乘以最大公约数(a/gcd*b/gcd*gcd)
化简以后就是a*b/gcd,
但在编程中,a*b很可能会超出范围,所以我们要先除再乘,即:a/gcd*b
代码:
最大公约数还有一种做法就是辗转相除法,
先用两个数中大的除以小的求余数,
c=a%b;
如果c不为0,
a=b;b=c;
继续c=a%b
直到c=0,最大公约数就是此时的b
我们可以用递归快速的完成这个过程
代码:
最小公倍数就是两个数除以最大公约数的商相乘,再乘以最大公约数(a/gcd*b/gcd*gcd)
化简以后就是a*b/gcd,
但在编程中,a*b很可能会超出范围,所以我们要先除再乘,即:a/gcd*b
代码:
int a=1,b=2,i=1,gcd,lcm; for(;i<=(a<b?a:b);i++) if(a%i==0&&b%i==0 gcd=i; lcm= a/gcd*b;
最大公约数还有一种做法就是辗转相除法,
先用两个数中大的除以小的求余数,
c=a%b;
如果c不为0,
a=b;b=c;
继续c=a%b
直到c=0,最大公约数就是此时的b
我们可以用递归快速的完成这个过程
代码:
int gcd(int a,int b) {return !b?a:gcd(b,a%b);}
相关文章推荐
- 我的编程学习日志(12)--求最大公约数,最小公倍数
- 我是这样学习Linux下C语言编程的-把程序输出信息加到系统日志里去
- Unix编程要学习的内容(2)《精通Unix下C语言与项目实践》读书笔记(12)
- cocos2d-x学习日志(12) --弹出对话框的设计与实现
- python 学习笔记12-----网络编程
- 浅谈内存开辟(c#学习日志)补2013 12 17
- AJAX ControlToolkit学习日志-FilteredTextBoxExtender(12)
- 黑马程序员——学习日志12高新技术(上)
- Java学习历程(关于最大公约数和最小公倍数)
- 我是这样学习Linux下C语言编程的-把程序输出信息加到系统日志里去
- 每天学习一点编程(12)(求满足要求的9位数)
- 菜鸟编程学习日志:对于节省编程时间之己见
- 黑马程序员-----网络编程学习日志
- C#学习日志(12)
- 基础学习:控制台接收输入字符与重定向输出流实现程序日志两例子的编程
- dll编程学习日志
- Java学习笔记10:求两个数的最小公倍数和最大公约数
- 我是这样学习Linux下C语言编程的-把程序输出信息加到系统日志里去
- 图形学编程学习日志01
- Android学习日志12__四大组件03__BroadcastReceiver