輾轉相除法

輾轉相除法是一個很基礎的用遞歸思想就可以實現的算法:

 

#include<stdio.h>

int main()

{

    int x,y;

    int gcd(int x,int y);

    scanf("%d%d",&x,&y);

    printf("%d",gcd(x,y));

    system("pause");

    return 0;

}

int gcd(int x,int y)

{

    if(y==0)return x;

    else return gcd(y,x%y);

}

但是,遞歸的方法效率會很低,此時,採用迭代的方法來做:

#include<iostream>

using namespace std;

int main()

{

int a,b;

int gcd(int a,int b);

cin>>a>>b;

cout<<gcd(a,b)<<endl;

return 0;

}

int gcd(int a,int b)

{

if(a==0)

return b;

while(b!=0)

{

int c=b;

b=a%b;

a=c;

}

return a;

}

 

 

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