您的位置:首页 > 其它

用欧几里得算法求解最大公约数

2009-07-05 21:17 246 查看
/*
*  Author: Leng_que
*  Date: 2009年7月5日
*  E-mail: leng_que@yahoo.com.cn
*  Description: 欧几里德(Euclid)算法又称辗转相除法,用于计算两个整数的最大公约数。
*/

#include <iostream>
using namespace std;

//欧几里得求最大公约数算法 —— 递归版
int gcd_recursive(int a,int b)
{
if ( a%b == 0 )
{
return b;
}
else
{
return gcd_recursive( b, a%b );
}
}

//欧几里得求最大公约数算法 —— 非递归版
int gcd(int a,int b)
{
int temp=0;

for(;;)
{
if ( a%b == 0 )
{
return b;
}
else
{
temp = a%b;
a = b;
b = temp;
}
}
}

int main(void)
{
int r=0;
int a,b;

a = 12;
b = 20;

cout<<a<<"和"<<b<<"的最大公约数为:"<<endl;

r = gcd_recursive(a,b);
cout<<r<<endl;

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

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: