每日一题:华为初级题库——最大公约数

  <题目要求>

    输入两个整数,输出其的最大公约数。

  思路:找寻1-两个整数的最小数之间,能同时被两个整数整除的数。其即为最大公约数。对于负数,先将其转为正数,再去求。

  易错点分析:(1)忽略负数的讨论;(2)找寻1-两个整数的最小数之间的数。

#include <iostream>

using namespace std;
int fabs(int x)
{
    if(x<0)
        x=-x;
    return x;
}
int main()
{
    int a,b;
    cin>>a>>b;
    a=fabs(a);
    b=fabs(b);
    int min=a>b?b:a;
    int max=0;
    for(int i=1;i<=min;i++)
    {
        if(a%i==0&&b%i==0)
        {
            if(max<i)
                max=i;
        }
    }
    cout << max<< endl;
    return 0;
}

 

posted on 2014-04-20 12:31  Sophie@原本  阅读(355)  评论(0编辑  收藏  举报