求两个整数的最大公约数

求两个整数的最大公约数

枚举法

#include 
int main()
{
    int a, b;
    int min;
    printf("请输入两个正整数(以空格键分隔)\n");
    scanf("%d %d", &a, &b);
    if (a > b)
    {
        min = b;
    }
    else
    {
        min = a;
    }
    int ret = 0;
    int i;
    for (i = 1; i <= min; i++)
    {
        if (a % i == 0)
        {
            if (b % i == 0)
            {
                ret = i;
            }
        }
    }
    printf("%d和%d的最大公约数为:%d", a, b, ret);

}

辗转相除法

  1. 如果b = 0,计算结束,最大公约数为a
  2. 否则,计算a / b的余数t(即 a% b = t),令 a = b, b = t
  3. 回到第一步
#include 
int main() {
    int a,b;
    printf("请输入两个整数(以空格键分隔)");
    scanf("%d %d",&a,&b);
    int t;
    while (b != 0)
    {
        t = a % b;
        a = b;
        b = t;
    }
    printf("最大公约数为:%d",a);
    return 0;
}

你可能感兴趣的:(求两个整数的最大公约数)