本题要求两个给定正整数的最大公约数和最小公倍数。
输入格式:
输入在一行中给出两个正整数 M 和 N(≤1000)。
输出格式:
在一行中顺序输出 M 和 N 的最大公约数和最小公倍数,两数字间以 1 空格分隔。
输入样例:
511 292
输出样例:
73 2044
来源:
来源:PTA | 程序设计类实验辅助教学平台
链接:https://pintia.cn/problem-sets/12/exam/problems/293
提交:
题解:
#include<stdio.h>
/*
* 辗转相除法:计算两个数的最大公约数
*/
int gcd(int x, int y) {
return x % y ? gcd(y, x % y) : y;
}
int main(void) {
int M, N;
scanf("%d%d", &M, &N);
// 辗转相除法求两个数的最大公约数
int maxDivisor = gcd(M, N);
// 最小公倍数等于两数的积除以最大公约数
int minMultiple = M * N / maxDivisor;
printf("%d %d", maxDivisor, minMultiple);
return 0;
}