杭电acm 1108题

这是一道求两个整数最大公倍数的问题,题目比较简单....

直接使用穷举法计算,数据不是很大....

#include "iostream"

using namespace std;

int main(void)
{
    int a1,a2;
    int i;
    while(cin>>a1>>a2)
    {
        if(a1>a2)
            i=a1;
        else i=a2;
        for(;;i++)
        {
            if((i%a1==0)&&(i%a2==0))
            {cout<<i<<endl;break;}
        }
    }
    return 0;
}

下面一种使用的是一种技巧来计算的....

#include <iostream>
using namespace std;

int lcm(int a,int b);
//最小公倍数:lease common multiple
//Precondition:a,b为两个正整数,且不为0
//Postcondtion:返回a,b的最小公倍数
int main()
{
    int a,b;
    while(1)
    {
        cout << "请输入两个正整数:";
        cin >> a >> b;
        cout << a << "" << b << "的最小公倍数为" << lcm(a,b) << endl;
    }
    return 0;
}

int lcm(int a,int b)
{
    int max = (a >= b?a:b),min = (a < b?a:b),i;
    for(i = 1;;i++)
    {
        if((max * i) % min == 0)
        {
            return (max * i);
        }
    }
}

 

posted on 2014-04-11 14:11  笑侃码农  阅读(443)  评论(1编辑  收藏  举报