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