Bootstrap

求最大公约数与最小公倍数(C语言 简洁快速版)

求最大公约数

辗转相除法(首选,因为简单快捷)

思路:
1.将两整数求余 a%b = c
2.如果c = 0;则b为最大公约数
3.如果c != 0,则 a = b;b = c;继续从1开始执行
4.也就是说该循环的是否继续的判断条件就是c是否为0

举例说明:

a = 21 b = 28

c = a%b = 21%28 = 21, 则c = 21 此时c不为0
执行 a = b , b = c , a = 28 ,b = 21

c = a%b = 28%21 = 7 ,则c = 7 此时c不为0
执行 a = b , b = c , a = 21 , b = 7

c = a%b = 21%47 = 0 ,则c = 0 循环结束

求最小公倍数

最小公倍数计算公式: 最小公倍数 = 两个数之间的乘积/两个数之间的最大公因数

程序如下:

#include<stdio.h>

int HCF(int,int);// 分号别忘了!!! 
int LCD(int,int,int);

int main()
{
	int a,b,h,l;
	printf("请输入两个数:"); 
	scanf("%d%d",&a,&b);
	h=HCF(a,b);
	l=LCD(a,b,h);
	printf("最大公约数是:%d\n最小公倍数是:%d",h,l); 
	return 0;
}

//最大公约数
int HCF(int a,int b)
{      
	int t,r;
	if(b>a){
	  t=b;
	  b=a;
	  a=t;
	}
	
	while((r=a%b)!=0){// 辗转相除法(CSDN上看看)
		a=b;
		b=r;
	}
	
	return b;

}

//最小公倍数    最小公倍数计算公式: 最小公倍数 = 两个数之间的乘积/两个数之间的最大公因数
int LCD(int a,int b,int h)
{
	return (a*b/h); 
	
}

运行结果:

;