PTA 7-74 最大公约数与最小公倍数
题目描述:
本题要求两个给定正整数的最大公约数和最小公倍数。
输入格式:
输入在一行中给出两个正整数 M 和 N(≤1000)。
输出格式:
在一行中顺序输出M和N的最大公约数和最小公倍数,两数字间以1空格分隔。
输入样例:
511 292
输出样例:
511 292
思路:
辗转相除法 求最大公约数,最小公倍数即最大公约数的逆运算。
详情见:求约数以及最大公约数与最小公倍数
代码如下:
#include <iostream>
#include <cstdio>
using namespace std;
int gcd(int a, int b) //求最大公约数
{
return b ? gcd(b, a % b) : a;
}
int lcm(int a, int b) //求最小公倍数
{
return a / gcd(a, b) * b;
}
int main()
{
int n, m;
cin >> n >> m;
int aa = gcd(n, m);
int bb = lcm(n, m);
cout << aa << " " << bb << endl;
return 0;
}