求两个数的最大公约数和最小公倍数

时间:2021-04-08 00:36:37

最大公约数和最小公倍数

●最大公约数:两个数的公共约数中最大的那个,求最大公约数的办法有辗转相除法、更相减损法、 穷举法。下面详细介绍着三种方法。
●最小公倍数:两数的乘积除以最大公约数就是最小公倍数。


①辗转相除法
【算法设计】:
求两个数的最大公约数和最小公倍数
【参考代码】:
int common_facter(int x, int y)
{
	int tmp = 0;
	while (x%y)
	{
		tmp = x%y;
		x = y;
		y = tmp;
	}
	//这里不必比较两个数的大小,因为小数对大数求余是它自己,相当于交换两数
	return y;
}

更相减损法
【算法设计】:

求两个数的最大公约数和最小公倍数

【参考代码】:
int common_facter(int x, int y)
{
	while (x != y)
	{
		if (x > y)
		{
			x = x - y;
		}
		else if (x < y)
		{
			y = y - x;
		}
	}
	return x;
}

③穷举法
【算法设计】:
求两个数的最大公约数和最小公倍数
【参考代码】:
 
int common_facter(int x, int y)
{
	int temp = x;
	while (temp)
	{
		if ((x%temp == 0) && (y%temp == 0))
		{
			break;
		}
           temp--;
	}
	//用穷举的方法找到两个数共同最大的约数
	return temp;
}

【测试文件】:test.c
#pragma warning(disable:4996)
#include<stdio.h>
#include<windows.h>

int main()
{
	int a = 0;
	int b = 0;
	int ret = 0;
	int temp = 0;
	printf("请输入两个数:");
	scanf("%d%d", &a, &b);
	temp = a*b;
	ret = common_facter(a, b);
	printf("最大公约数为:%d\n", ret);
	printf("最小公倍数为:%d\n", temp/ret);
	system("pause");
	return 0;
}

【运行结果】:
求两个数的最大公约数和最小公倍数

参考源码:求最大公约数和最小公倍数。欢迎转载,转载请声明出处https://blog.csdn.net/hansionz