最大公约数和最小公倍数
●最大公约数:两个数的公共约数中最大的那个,求最大公约数的办法有辗转相除法、更相减损法、
穷举法。下面详细介绍着三种方法。
●最小公倍数:两数的乘积除以最大公约数就是最小公倍数。
①辗转相除法
【算法设计】:
【参考代码】:
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