首页 > 编程知识 正文

最大公约数用辗转相除法,辗转相除法和更相减损术求最大公因数

时间:2023-05-05 20:36:28 阅读:188389 作者:4537

辗转相除法的a%b运算性能较低

更相减损法,当两数相差很大时运算量也会加大


#include <iostream>using namespace std;int gcd(int a,int b)//辗转相除法{ if(a<b) { int temp=a; a=b; b=temp; } int c; while(b) { c=a%b; a=b; b=c; } return a;}int gcd1(int a,int b)//更相减损法{ if(a==b) return a; else if(a>b) return gcd1(a-b,b); else return gcd1(b-a,a);}int gcd2(int a,int b)//从最大的数依次遍历(计算量很大)不安全{ if(a>b){ for(int i=b;i>=2;i--) { if(a%i==0&&b%i==0) return i; } } else for(int i=a;i>=2;i--) { if(a%i==0&&b%i==0) return i; }}int main(){ int num1,num2; cin>>num1>>num2; cout<<gcd(num1,num2)<<endl; cout<<gcd1(num1,num2)<<endl; cout<<gcd2(num1,num2)<<endl; return 0;}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。