描述
请你编写两个函数,分别用于计算给定两个正整数的最大公约数和最小公倍数。其中,最大公约数(Greatest Common Divisor,简称GCD)是指能够同时整除给定两个整数的最大正整数;而最小公倍数(Least Common Multiple,简称LCM)则是指能够同时被给定两个整数整除的最小正整数。
输入
输入包含两个正整数a和b,以空格分隔。(1 ≤ a,b ≤ 10^9)
输出
输出包含两行,每行一个整数,分别为a和b的最大公约数和最小公倍数。如果输入的不是正整数,则输出"Invalid input!"。
输入样例 1
10 25
输出样例 1
5
50
输入样例 2
24 36
输出样例 2
12
72
输入样例 3
-6 8
输出样例 3
Invalid input!
cpp
#include <iostream>
#include <cmath>
using namespace std;
int GCD(int a, int b)
{
int min = (a < b) ? a : b;
int G=0;
for (int i = 1; i <= min; i++)
{
if (a % i == 0 && b % i == 0)
G = i;
}
return G;
}
int LCM(int a, int b)
{
int L = 0;
int max = (a > b) ? a : b;
for (int i = max;; i++)
{
if (i % a == 0 && i % b == 0)
{
L = i;
break;
}
}
return L;
}
int main()
{
int a, b;
cin >> a >> b;
if (a < 1 || b<1 || a % 1 != 0 || b % 1 != 0 || b>pow(10, 9))
{
cout << "Invalid input!";
}
else cout << GCD(a, b) << endl << LCM(a, b);
return 0;
}