1037题目描述
写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果两个整数由键盘输入。
输入
两个数
输出
最大公约数 最小公倍数
样例输入
6 15
样例输出
3 30
思路:辗转相除法求最大公约数,公式法(两数的乘积除以最大公约数)求最小公倍数,代码献上,欢迎指教。
#include<iostream>
using namespace std;
int max_(int num_a, int num_b){//最大公约数
if(num_a < num_b){
int temp = num_a;
num_a = num_b;
num_b = temp;
}
if(num_a % num_b == 0){ //辗转相除法
return num_b;
}else{
return max_(num_b, num_a % num_b);
}
}
int min_(int num_a, int num_b, int num){ //最小公倍数
return (num_a * num_b) / num; //公式法
}
int main(){
int num_a, num_b;
cin >> num_a >> num_b;
cout << max_(num_a, num_b) << " ";
cout << min_(num_a, num_b, max_(num_a, num_b)) << endl;
return 0;
}