程序如下。思路:编写一个有返回值的函数,使用辗转相除法求两数最大公约数;再编写一个有返回值的函数根据公式(最小公倍数=两数之积除以两数的最大公约数)求两数最小公倍数。
#include<stdio.h>
int main(){
int hcf(int,int); //函数声明
int lcd(int,int,int); //函数声明
int x,y;
scanf("%d%d",&x,&y); //输入俩整数
puts("最大公约数:");
printf("%d\n",hcf(x,y)); //调用函数并输出两数最大公约数
puts("最小公倍数:");
printf("%d\n",lcd(x,y,hcf(x,y)));//调用函数并输出两数最小公倍数
return 0;
}
/*求最大公约数函数*/
int hcf(int a,int b){
int max,min,c;
//找出两数中的最大值,最小值
if(a>b) {
max=a;min=b;
}
else{
max=b;min=a;
}
//辗转相除法
c=max%min;
if(c!=0) {
max=min;
min=c;
hcf(max,min); //递归调用
}
else return(min);
}
/*计算两数最小公倍数*/
int lcd(int a,int b,int hcf){
return (a*b/hcf);
}