1. 程式人生 > >【擴充套件歐幾里得演算法】輾轉相除法

【擴充套件歐幾里得演算法】輾轉相除法


其計算原理依賴於下面的定理:

定理:兩個整數的最大公約數等於其中較小的那個數和兩數相除餘數的最大公約數。最大公約數(Greatest Common Divisor)縮寫為GCD。

/*
歐幾里德演算法:輾轉求餘
原理: gcd(a,b)=gcd(b,a mod b)
當b為0時,兩數的最大公約數即為a
getchar()會接受前一個scanf的回車符
*/
#include<stdio.h>
unsigned int Gcd(unsigned int M,unsigned int N)
{
    unsigned int Rem;
    while(N > 0)
    {
        Rem = M % N;
        M = N;
        N = Rem;
    }
    return M;
}
int main(void)
{
    int a,b;
    scanf("%d %d",&a,&b);
    printf("the greatest common factor of %d and %d is ",a,b);
    printf("%d\n",Gcd(a,b));
    return 0;
}