求最大公约数和最小公倍数
2018-01-29 16:14
211 查看
辗转相除法求最大公因数
辗转相除法:(简单来说)两个数,用较大的数除以较小的数,得到第一余数,在用较小的数除以第一个余数,得到第二余数,在用第二个余数除以第一余数,重复过程,直到到余数为0;那么最后一个余数就是这两个数的最大公约数;
举例说明:
a = 36, b = 10;
1. 36除以10得3, 余6
2. 10除以6得1, 余4
3. 6除以4得1, 余2
4. 4除以2等于0
所以36和10的最大公约数为2
上述程序中判断了a和b值得大小,当a小于b时,可以不用专门比较并交换两个数,如以下程序所示:
辗转相除法:(简单来说)两个数,用较大的数除以较小的数,得到第一余数,在用较小的数除以第一个余数,得到第二余数,在用第二个余数除以第一余数,重复过程,直到到余数为0;那么最后一个余数就是这两个数的最大公约数;
举例说明:
a = 36, b = 10;
1. 36除以10得3, 余6
2. 10除以6得1, 余4
3. 6除以4得1, 余2
4. 4除以2等于0
所以36和10的最大公约数为2
#include<stdio.h> int main() { int a = 50; int b = 36; if (a > b) { int tmp = a; a = b; b = tmp; } while (a%b!=0) { int r = a%b; a = b; b = r; } printf("最大公约数是:%d",b); return 0; }
上述程序中判断了a和b值得大小,当a小于b时,可以不用专门比较并交换两个数,如以下程序所示:
#include<stdio.h> int main() { int a = 36; int b = 50; while (a%b != 0) //a%b==36 { int tmp = a%b; //第一次循坏实现了a,b的交换; a = b; b = tmp; } printf("最大公因数为:%d\n", b); return 0; }
两个数的最小公倍数
求最小公倍数:两个数相乘,然后除以它们的最大公因数即为最小公倍数#include<stdio.h> int main() { int a = 36; int b = 50; int c =a*b; while (a%b != 0) { int tmp = a%b; a = b; b = tmp; } printf("最小公倍数为:%d\n", c/b); //c是两个数的乘积 return 0; }
相关文章推荐
- 求最大公约数和最小公倍数---调用函数
- 最大公约数和最小公倍数
- 1012 最大公约数和最小公倍数问题
- 求最大公约数和最小公倍数(辗转相除法)
- WV.41-两个整数的最大公约数和最小公倍数
- 求最大公约数和最小公倍数(2013-06-11)
- 洛谷1029 最大公约数和最小公倍数问题 解题报告
- 求最大公约数和最小公倍数
- 【杭电-oj】-1108-最小公倍数(先辗转相除找到最大公约数)
- 欧几里得辗转相除求最大公约数最小公倍数
- 求若干整数的最大公约数和最小公倍数
- Javascript基础_07基础应用:求线性函数值、求奇数偶数和、求水仙花数、利用辗转相除法求最大公约数和最小公倍数、求某一年的日期为第几天
- (c++)写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果两个整数由键盘输入。
- P1029 最大公约数和最小公倍数问题
- 三种方法求最大公约数及求n个数的最小公倍数
- C语言解决“两个数的最大公约数和最小公倍数问题”
- 求最大公约数和最小公倍数
- 最大公约数和最小公倍数问题--分解质因子
- 编程求两个数的最大公约数和最小公倍数
- 最大公约数和最小公倍数问题