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