求最大公约数
辗转相除法(首选,因为简单快捷)
思路:
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);
}
运行结果: