1.基本概念:
如果数a能被数b整除,a就叫做b的倍数,b就叫做a的约数。
几个整数中公有的约数,叫做这几个数的公约数;其中最大的一个,叫做这几个数的最大公约数。例如:12、16的公约数有1、2、4,其中最大的一个是4,4是12与16的最大公约数。
几个自然数公有的倍数,叫做这几个数的公倍数,其中最小的一个自然数,叫做这几个数的最小公倍数。
2.分析:
最小公倍数=两个数的乘积再除以他们的最大公约数,所以需要求出最大公约数。
在这里,声明了gcd和lcm两个函数。
if(b==0){
return a;
}
return gcd(b,a%b);
上面这个gcd函数在求最大公约数时候,利用到了递归。例如:输入15,12.第一次返回了12,3.此时b还是不等于0,继续return gcd(b,a%b),返回了3,0.此时b==0,返回了3,是他们的最大公约数。
3.代码:
#include<stdio.h>
int gcd(int a,int b){
if(b==0){
return a;
}
return gcd(b,a%b);
}
int lcm(int a,int b){
return a*b/gcd(a,b);
}
int main(){
int x,y;
printf("请输入两个整数:");
scanf("%d,%d",&x,&y);
int gcd_max=gcd(x,y);
int lcm_min=lcm(x,y);
printf("最大公约数为:%d",gcd_max);
printf("最小公倍数为:%d",lcm_min);
return 0;
}
4.运行结果: