题目
输入两个数(空格隔开)分2行输出他们的最大公因数和最小公倍数
原理
辗转相除法计算最大公约数
- 将两个数中较大的数除以较小的数,并将较小的数作为除数,较大的数作为被除数。
- 计算余数。
- 若余数为零,则较小的数即为最小公约数。
- 若余数不为零,则将上一步的除数作为新的被除数,余数作为新的除数,重复步骤 2 和步骤 3,直到余数为零为止。
最小公倍数即2数乘积除最大公约数
代码
python
a,b=map(int,input().split())
m=a*b
while a%b:
a,b=b,a%b
print(b) #最大公约数
print(m//b) #最小公倍数
C
#include <stdio.h>
int main() {
int a,b,tmp,m;
scanf("%d %d",&a,&b);
m=a*b;
while(tmp=a%b){
a=b;
b=tmp;
}
printf("%d\n",b); //最大公约数
printf("%d\n",m/b);//最小公倍数
return 0;
}