三種方法求最大公約數(c語言)僅供參考

 

1.相減法

算法如下:

(1)如果a>b,a=a-b;

  (2)如果a<b,b=b-a;

  (3)如果a=b,a或者b就是這兩個數的最大公約數

(4)如果a!=b,則再執行(1)或(2)。

代碼如下:

 int xjf(int a,int b)
{
    while(a!=b)
    {
        if(a>b)
        {
        a=a-b;
        }
        else if(a<b)
        {
        b=b-a;    
        }
    }
    return a; 
}

2.輾轉相除法

算法如下:

(1)對於已知的兩個數a,b

  (2)a除以b餘數r;

  (3)若r=0,則n就是所求的最大公約數,否則執行(4);

(4)令a=b,b=r;重複執行(4);

代碼如下:

int xcf(int a,int b)
{
    int r;
    r=a%b;
    while(r!=0)
    {
        a=b;
        b=r;
        r=a%b;
    }
    return b;
}

3.窮舉法

算法如下:

(1)定義c;

  (2)如果a>b,則c=b;

  (3)如果a<b,則c=a;

  (4)如果a%c!=0||b%c!=0,則執行c--;

  (5)如果a%c==0||b%c==0,則c爲最大公約數

代碼如下:

int qjf(int a,int b)
{
    int c;
    if(a>b)
    c=b;
    else if(a<b)
    c=a;
    while(a%c!=0||b%c!=0)
    {
        c--;
    }
    return c;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章