#include <stdio.h>
/*
* 主函数:计算并打印两个数的最大公约数和最小公倍数
*/
int main(){
// 定义计算最大公约数和最小公倍数的函数
int hcf(int,int);
int lcd(int,int,int);
int u,v,h,l; // u,v为输入的两个数,h为最大公约数,l为最小公倍数
printf("Please enter two numbers:");
scanf("%d,%d",&u,&v); // 输入两个数
h= hcf(u,v); // 计算最大公约数
printf("最大公约数=%d\n",h); // 打印最大公约数
l=lcd(u,v,h); // 计算最小公倍数
printf("最小公倍数=%d\n",l); // 打印最小公倍数
}
/*
* 计算两个数的最大公约数(欧几里得算法)
* 参数:u, v - 两个待求最大公约数的整数
* 返回值:u和v的最大公约数
*/
int hcf(int u,int v){
int t,r;
if(v>u){ // 交换u和v,确保u总是大于等于v
t=u;
u=v;
v=t;
}
while((r=u%v)!=0){ // 当u除以v的余数不为0时,继续循环
u=v;
v=r; // 更新u和v,将v赋值为余数r,u赋值为原来的v
}
return v; // 循环结束后,v即为最大公约数
}
/*
* 计算两个数的最小公倍数
* 参数:u, v - 两个整数;h - u和v的最大公约数
* 返回值:u和v的最小公倍数
*/
int lcd(int u,int v,int h){
return (u*v)/h; // 最小公倍数等于两数之积除以它们的最大公约数
}