一、题目
运行最大公约数的常用算法,并进行程序的调式与测试,要求程序设计风格良好,并添加异常处理模块(如输入非法等)。
二、算法
辗转相除法
辗转相除法(又名欧几里德法)C语言中用于计算两个正整数a,b的最大公约数和最小公倍数,实质它依赖于下面的定理:
在这里插入图片描述
根据这一定理可以采用函数嵌套调用和递归调用形式进行求两个数的最大公约数和最小公倍数,现分别叙述如下
三、源代码
#include<stdio.h>
int main()
{
int x = 0;
int y = 0;
int z = 0;
scanf_s("%d%d", &x, &y);
z = x * y;
if (x < y)
{
int temp = x;
x = y;
y = temp;
}
int k = x % y;
while (k)
{
x = y;
y = k;
k = x % y;
}
printf("最大公约数为:%d\n", y);
printf("最大公约数为:%d\n", z/y);
return 0;
}