求a,b两数的最大公约数的两种方法

来源:互联网 发布:大数据架构师 认证 编辑:程序博客网 时间:2024/05/16 07:51

这里提供了两种方法,你可以测试下哪种方法效率更高。

方法一:运用了辗转相除法

#include<iostream>using namespace std;int gcd(int a,int b){if(a%b == 0)  return b;    if(b > a%b)gcd(b,a%b);elsegcd(a%b,b);}int main(){int a,b;while(cin>>a>>b){cout<<gcd(a,b)<<endl;}return 0;}




方法二:欧几里得算法
</pre><pre>
#include<iostream>using namespace std;int gcd(int a,int b){int temp;while(a != b){if(a > b){temp = b;b = a - b;a = temp;}else{temp = a;a = b - a;b = temp;}}return b;}int main(){int a,b;while(cin>>a>>b){cout<<gcd(a,b)<<endl;}return 0;}


扩展如需要求a,b最小公倍数只需a/gcd(a,b)*b即可

0 0
原创粉丝点击