无言面对”江东父老“了,接触编程一年了,今天发现还不会辗转相除法求最大公约数。惭愧惭愧!
为此,总结一下以方便日后忘了好查找。
1.输入要比较的两个数a,b
忽略:2.比较大小(因为后面要的是大的数对小的数做%操作)
3.辗转相除(用循环不停的取余,如a%b,直至b=0)
4.最后的a为两数的最大公约数
于是代码如下:
//求最大公约数的函数 int maxGY(int a,int b) { //判断大小(可以不判断) if (a < b) { int temp = a; a = b; b = temp; } while (b!=0) { //大的对小的取余 int m = a%b; a = b; b = m; } //返回最大公约数 return a; }
有了最大公约数,最小公倍数也就easy了,
最小公倍数=数1*数2/最大公约数。
代码如下:
//求最小公倍数的函数 int minGB(int a,int b) { //先求最大公约数 int m = maxGY(a, b); int n = a*b / m; return n; }