求三个数最大公约数算法

#include <stdio.h>

typedef int BOOL;
#define true 1
#define false 0

BOOL isEven(int x)//判断是否为偶数
{
	if(x%2 == 0)
		return true;
	else 
		return false;
}

int gcd_mix(int x, int y)//求两个数的最大公约数
{
	if(x < y)
		return gcd_mix(y , x);
	if(y == 0)
		return x;
	else
		if(isEven(x))
		{
			if(isEven(y))
				return 2*gcd_mix(x>>1,y>>1);
			else
				return gcd_mix(x>>1,y);
		}
		else
		{
			if(isEven(y))
				return gcd_mix(x,y>>1);
			else
				return gcd_mix(y,x-y);
		}
}

int main()
{
	int l,w,h;
	while(scanf("%d %d %d",&l,&w,&h),l,w,h)//输入3个不为0的正整数
	{
		printf("lwh 最大公约数为:%d \n",gcd_mix(gcd_mix(l,w),h));
	}
	return 0;
}

    原文作者:烛天大人
    原文地址: https://blog.csdn.net/m0_52317996/article/details/123503263
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞