赞
踩
辗转相除:
假如需要求 1997 和 615 两个正整数的最大公约数,进行过程如下:
1997 / 615 = 3 (余152)
615 / 152 = 4(余7)
152 / 7 = 21(余5)
7 / 5 = 1 (余2)
5 / 2 = 2 (余1)
2 / 1 = 2 (余0)
至此,最大公约数为1,以除数和余数反复做除法运算,当余数为 0 时,取当前算式除数为最大公约数。
假设a,b两个数的最大公约数为m,则最小公倍数n=a*b/m
例如24和36,用辗转相除法得到最大公约数为12。再通过公式24*36/12得到最小公倍数为72。
- #define _CRT_SECURE_NO_WARNINGS
- #include<stdio.h>
-
- //辗转相除法求两个数的最大公约数
- int MaxDevisor(int max,int min) {
- int temp;
- while (min != 0) {
- temp = min;
- min = max % min;
- max = temp;
- }
- return max;
- }
-
- //求最小公倍数
- int MinMultiple(int a, int b) {
- return a*b/MaxDevisor(a, b);
- }
-
- int main(void) {
- printf("%d",MinMultiple(24,36));
- return 0;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。