最小公倍数和最大公约数 在学校的时候 不管学什么编程 练习总会有这个题 看起来挺简单的
其实 它就是那么的简单
在编代码之前 我们可以做一下这样的假设
有两个数 m、n
最大公约数是a
那么 m = b * a;
n = c * a;
那么 最小公倍数k = a * b * c;
k = m * n / a;
所以 求出最大公约数a是关键
那说到这里 最大公约数咋求呢
公约数就是m、n都能整除的数且是最大的那个 但是不能比m、n其中一个大 必须小于等于 m、n中最小的那个数
那么就把m、n中最小的数赋值给smallNumber,大得数赋值给largeNumber, 然后从 2 到smallNumber之间遍历
value来记录他们公约数 知道循环到smallNumber 最后value 就是最大的那个公约数
那么,下面就用代码 来实现这个小小的算法 呵呵呵呵呵呵呵
//声明一个函数 求得m、n的最大公约数
int maxCommonDivide(int m,int n){
int value,smallNumber,largeNumber;
/*
//求出最大数和最小数
largeNumber = m > n ? m : n;
smallNumber = m < n ? m : n;
*/
if (m >= n) {
smallNumber = n;
largeNumber = m;
}
if (n > m) {
smallNumber = m;
largeNumber = n;
}
for (int i = 2; i <= smallNumber; i++) {
if ((smallNumber % i == 0) && (largeNumber % i == 0)) {
value = i;
}
}
return value;
}
//声明并实现一个函数 根据最大公约数来求出最小公倍数
int minCommonMultiple(int m, int n){
return m * n / maxCommonDivide(m, n);
}
int main(int argc, const char * argv[]){
int maxCommonDivideNumber = maxCommonDivide(19, 9);
int minCommonMultipleNumber = minCommonMultiple(19, 9);
return 0;
}