算法-数学-最大公约数

整除与剩余

        欧几里得算法

            任务:求两个数a,b的最大公约数gcd(a,b)。
            定义:gcd(a,b)=gcd(b,a mod b),其中a>=b。不断迭代直到b==0,a就是原来数对的最大公约数
            复杂度:O(logN)
            输入:a,b
            输出:a,b的最大公约数

int gcd(int a, int b) {
	return b==0?a:gcd(b, a%b);
}

int gcd(int a, int b) {
	while (b) {
		int c = a % b;
		a = b;
		b = c;
	}
	return a;
}


        

猜你喜欢

转载自blog.csdn.net/qq_31854267/article/details/80176491