Stein算法求最大公约数

求最大公约数最快捷的方法,求大数的最大公约数也是轻而易举

#include<iostream>
using namespace std;
int gcd(int a,int b){
    if(a<b)swap(a,b);    //保证a>=b
    if(a==b||b==0)return a;    //相等或者有0的就结束
    if(a%2==0&&b%2==0)return 2*gcd(a/2,b/2);    //均为偶数
    else if(a%2&&b%2)return gcd((a+b)/2,(a-b)/2);    //均为奇数
    else if(a%2&&b%2==0)return gcd(a,b/2);    //一奇一偶
    else return gcd(a/2,b);    //一偶一奇
}
int main(){
    cout<<gcd(1000000,15);
}

你可能感兴趣的:(Stein算法求最大公约数)