问题描述:
编写两个函数,分别求两个整数的最大公约数和最小公倍数。
分析:
1.两个整数的最小公倍数等于它们的乘积除以它们的最大公约数。所以关键是编写最大公约数函数,最小公倍数函数只要调用最大公约数的函数就行了。
2.先回顾一下求最大公约数的辗转相除方法,
假设求a和b的最大公约数,则
(1)a除以b取余得c,若c=0,则b即为两数的最大公约数,输出,结束。
(2)若c!=0,则将b赋给a,c赋给b,再返回第一步操作,继续执行。
代码实现:
#include<stdio.h>
//最大公约数函数
int gcd(int m,int n){
int t;
//交换函数 确保m大于n
if(m<n){
t=m;
m=n;
n=t;
}
//辗转相除
while(n!=0){
t=m%n;
m=n;
n=t;
}
return m;
}
//最小公倍数函数
int lcd(int m,int n){
int t;
t=m*n/gcd(m,n);
return t;
}
main(){
int a,b;
printf("input a,b: ");
scanf("%d,%d",&a,&b);
printf("%d和%d最大公约数为:%d\n",a,b,gcd(a,b));
printf("%d和%d最小公倍数为:%d\n",a,b,lcd(a,b));
}
代码运行截图: