本题要求两个给定正整数的最大公约数和最小公倍数。
输入格式:
输入在一行中给出两个正整数M和N(≤1000)。
输出格式:
在一行中顺序输出M和N的最大公约数和最小公倍数,两数字间以1空格分隔。
输入样例:
511 292
结尾无空行
输出样例:
73 2044
结尾无空行
#include <stdio.h>
int main()
{
int m,n,a,b;
scanf("%d %d",&m,&n);
a=m;
b=n;//先保存m和n的值
while(m!=n){
if(m>n){
m=m-n;
}
else{
n=n-m;
}
}
printf("%d %d",m,a*b/m);
return 0;
}
使用的相减法。
两数求最大公约数和最小公倍数,
首先用大的数减小的数,一直循环用大数减小数,当减数与差相等时,这个数就是最大公约数。
最小公倍数是两数的乘积除以最大公约数。