(EX)GCD

发布时间 2023-11-04 00:34:19作者: Raymongillichmks

(EX)GCD

1、给定两正整数m,n
2、选取其中较小的数,假定为m
3、若n%m非0,即存在余数,将n和m中较大的数n替换为余数,返回步骤2
4、若n%m为0,则最大公约数为m

#include <stdio.h>
 
int main()
{
	int data1, data2;
	int data;
 
	scanf_s("%d%d", &data1, &data2);
	if (data1 > 0 && data2 > 0)//判断数据合法
	{
		if (data1 > data2)//将两个数据大小位置固定 
		{
			int temp = data1;
			data1 = data2;
			data2 = temp;
		}
 
		data = data1 % data2;
		while (data)
		{
			data1 = data2;
			data2 = data;
			data = data1 % data2;
		}
		printf("%d\n", data2);//最后结果保存在data2中 
	}
 
	return 0;
 
}

网站链接:欧几里得求最大公约数

伪代码

算法 欧几里得算法(a, b):
    如果 b 等于 0:
        返回 a
    否则:
        返回 欧几里得算法(b, a 除以 b 的余数)

解释:函数 欧几里得算法(a, b) 是欧几里得算法的主函数,它接受两个参数 a 和 b。
首先判断 b 是否等于 0,如果是 0,则 a 就是最大公约数,直接返回 a。
否则,将 a 除以 b 得到余数 r,然后将 b 和 r 作为新的 a 和 b 递归调用 欧几里得算法 函数,一直递归到 b 等于 0。
最终返回的结果就是 a 和 b 的最大公约数。

亲测