NC54505. 小乐乐与欧几里得
描述
小乐乐最近在课上学习了如何求两个正整数的最大公约数与最小公倍数,但是他竟然不会求两个正整数的最大公约数与最小公倍数之和,请你帮助他解决这个问题。
输入描述
每组输入包含两个正整数n和m。(1 ≤ n ≤ 109,1 ≤ m ≤ 109)
输出描述
对于每组输入,输出一个正整数,为n和m的最大公约数与最小公倍数之和。
示例1
输入:
10 20
输出:
30
示例2
输入:
15 20
输出:
65
C++11(clang++ 3.9) 解法, 执行用时: 3ms, 内存消耗: 628K, 提交时间: 2019-11-08 18:08:11
#include<bits/stdc++.h> using namespace std; int main(){ long long a,b,g,l; cin>>a>>b;g=__gcd(a,b);l=(a/g)*b; cout<<g+l; }
Python(2.7.3) 解法, 执行用时: 29ms, 内存消耗: 4672K, 提交时间: 2019-11-08 18:08:38
from fractions import gcd n, m = map(int, raw_input().split()) print gcd(n, m) + n * m / gcd(n, m)
Python3(3.5.2) 解法, 执行用时: 29ms, 内存消耗: 3568K, 提交时间: 2019-11-08 20:39:00
n,m=map(int,input().split()) s=n*m while n%m!=0: n,m=m,(n%m) print(m+s//m)