(EX)GCD
(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 的最大公约数。
亲测