题目
求从键盘键入的两个数的最大公因数和最小公倍数
思路
- 最大公因数(辗转相除法):
解决:
用大的数除以小的数,得到一个的余数,再用上次较小的数继续除以余数,直到余数为0,最后剩下的最小数即为最大公约数。
例如:15和9求最大公因数
Step1: 较大的15除以较小的9:
15/9=1…6
Step2:较小的9除以余数6:
9/6=1…3
Step3:较小的6除以余数3:
6/3=2…0
余数为0,最大公因数为3.
- 最小公倍数:
两数乘积除以最大公因数。
例如:15和9
15*9/3=45
最小公倍数为45
代码
#include<stdio.h>
int main()
{
int a,b,max,min;
scanf("%d%d",&a,&b);
if(a>b){
max=a;
min=b;
}else{
max=b;
min=a;
}
int i;
do{
i=max%min;
if(i==0){
max=a*b/min;
printf("%d %d",min,max);
}else{
max=min;
min=i;
}
}while(i!=0);
}