zjut_1178 最小公倍数

来源:互联网 发布:小米网络摄像头怎么用 编辑:程序博客网 时间:2024/06/05 13:33

Description:

求两个正整数的最小公倍数。

Time Limit:1000MS  Memory Limit:32768K

Input:

输入数据含有不多于50对的数据,每对数据由两个正整数(0<n1,n2<100000)组成。

Output:

对于每组数据n1和n1,计算最小公倍数,每个计算结果应占单独一行。

Sample Input:

6 5 18 12

Sample Output:
30
36

题解:求两个正整数的最小公倍数,很容易想到用二者乘积除以其最大公约数,即a*b/gcd(a,b).
          但是两数先相乘会产生很大的数,可能会超过整数的表示范围:
          对于32位CPU,int的表示范围为-2^31~0~2^31-1,即-2147483648~2147483647.
          所以,要把计算顺序改一下,最小公倍数=a/gcd(a,b)*b.

代码:
#include <iostream>using namespace std;int gcd(int ,int);int main(){    int a,b;    while(cin>>a>>b)    {        cout<<a/gcd(a,b)*b<<endl;    }    return 0;}int gcd(int x, int y){    if (y==0) return x;    else return gcd(y,x%y);}

0 0
原创粉丝点击