标签:
最大公约数 和 最小公倍数问题
是一个小问题,虽然说是个小问题,
但是,它是基本的,
很多时候,
我们却不一定能够随手写出它。
首先,(此段转载自百科)
#include <stdio.h> //递归实现 int gcd(int m,int n) { if (m < n) { int tmp = m; m = n; n = tmp; } if (n == 0) return m; else return gcd(n,m % n); } } //非递归实现 int gcd2(int m,int n) { if (m < n) { int tmp = m; m = n; n = tmp; } if (n == 0) return m; while (n > 0) { int tmp = m % n; m = n; n = tmp; } return m; }
有递归和非递归两种,为了代码的高效性,非递归显然更好!
那么,有了最大公约数,我们就可以很简单的求出最小公倍数啦~~~
//求最小公倍数 int gbs(int m,int n) { return m*n/gcd(m,n); }
当然,代码虽然是两个数的,但是可以很快的推到n个数,只要每次求出一个,接着进行函数即可。
基础算法不能忘,加油。
标签:
原文地址:http://www.cnblogs.com/ikids/p/4190022.html