歐幾里得算法

給定兩個正整數m和n,求它們最大公因子,即能整除m和n的最大正整數(a=b*c,則b和c都能整除a)算法

算法流程

  E1.以n除m,r爲所得的餘數(0<=r<n)ide

  E2.若是r爲0,算法解決,n爲答案spa

  E3.m=n,n=r;返回步驟E1code

證實

  對於任意正整數q,存在 m=q*n+rblog

  1)若是r==0;n即爲最大公約數event

  2)若是r!=0;對於任意m和n的公約數g;class

   由於r=m-q*n,因此g能整除r;cli

   因此m和n的公因子集合與n和r的公因子集合相同sed

   因此GDC(m,n)=GCD(n,r)=GCD(n,m%n)im

代碼實現

int GCD(int m,int n)
{
    int r;
    while(n!=0)
    {
        r=n;
        n=m%n;
        m=r;
    }
    return m;
}
View Code
相關文章
相關標籤/搜索