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

时间:2021-07-10 21:30:38
 #include<iostream>
using namespace std;
//不推荐用goto,当然用它更快
//辗转相除法求两数的最大公约数
int gcd(long int a,long int b){
int x=a<b?a:b;
//获得较小者,用来做循环的约束值 for(int i=;i<x;x++){
//循环
if(a>b){
int r=a%b;//取余数
if(r==){//能否整除判断
return b;//可以便输出
}else{//否则进行下一轮的算法
a=b,b=r;
}
}else if(a<b){//下面一样
int r=b%a;
if(r==){
return a;
}else{
b=a,a=r;
}
}else{//两数相等的,直接输出其中一个
return a;
}
}
} int main(){
int y=;y=gcd(,);
cout<<"156和176的最大公约数是:"<<y; return ;
}

原理: 欧几里得,辗转相除法, a 和 b 的最大公约数,等于 a除b 后的余数和b的最大公约数。 a 除 b 余 c,b 和 c 的最大公约就是 a 和 b 的