【算法】求最大公因子(辗转相除法)

1. 题目

求最大公因子(辗转相除法)。

求任意两个整数M,N最大公因子(M,N)的方法如下:

若 M=N*Q+R,其中: R为余数, 满足 O≤R≤N-1 ,
则 (M,N)=(N,R) 且当 R=0时, (M,N)=N。

例如,(1500,550)的求解过程如下:

 (1500,550)=(550,400)
=(400,150)=(150,100)
=(100,50)=(50,0)=50

2. 实现思路

使用循环判断第二个整数是否为0即可。

3. C实现

/* 碾转相除法求最大公因子 */
int hcf(int m, int n)
{
    int t;
    while(n != 0)
    {
        t= m % n;
        m = n;
        n = t;
    }

    return m;
}

测试:

#include <stdio.h>

/* 碾转相除法求最大公因子 */
int hcf(int m, int n)
{
    int t;
    while(n != 0)
    {
        t= m % n;
        m = n;
        n = t;
    }

    return m;
}


int main()
{
    printf("%d\n", hcf(1500,550));

    return 0;
}

使用gcc编译,运行:
在这里插入图片描述

原创文章 289 获赞 1058 访问量 38万+

猜你喜欢

转载自blog.csdn.net/Mculover666/article/details/105739984