首页 > 代码库 > 辗转相除法求最大公约数,非goto

辗转相除法求最大公约数,非goto

 1 #include<iostream> 2 using namespace std; 3 //不推荐用goto,当然用它更快 4 //辗转相除法求两数的最大公约数 5 int gcd(long int a,long int b){ 6     int x=a<b?a:b; 7     //获得较小者,用来做循环的约束值 8      9     for(int i=0;i<x;x++){10         //循环11       if(a>b){12           int r=a%b;//取余数13           if(r==0){//能否整除判断14              return b;//可以便输出15           }else{//否则进行下一轮的算法16               a=b,b=r;17           }18       }else if(a<b){//下面一样19           int r=b%a;20           if(r==0){21               return a;22           }else{23               b=a,a=r;24           }25       }else{//两数相等的,直接输出其中一个26           return a;27       }28    }29 }30 31 int main(){32     int y=0;y=gcd(156,176);33     cout<<"156和176的最大公约数是:"<<y;34 35     return 0;36 }

 

辗转相除法求最大公约数,非goto