这是典型的辗转相除法找最大公因数
再利用最大公因数与最小公倍数的性质求公倍数。
注释之前我先简单说一下这个方法的原理:
1.辗转相除法
以求9和6的最大公因数和最小公倍数为例。
9/6=1余3 9%6=3 那么9分为了3和6两部分
6/3=2余0 6%3=0 那么6是3的倍数,而前面已经说了9为3和6相加,那么9也一定是3的倍数。
因此3为6和9的最大公因数(至于为什么是最大的,是因为我们是从俩数相除开始的,也就是从最大的数往下找)
2.最小公倍数
对于最小公倍数我们假设9,6,他们的最大公因数为3。
而9=3*3 6=3*2
最简单的公倍数为6*9=54
写成6*9=3*2*3*3
可以发现存在两个最大公因数3
那么去掉一个为3*2*3就既是9倍数也为6倍数
则最小公倍数=两数相乘/最大公因数
再看注释如下:
#include"stdio.h"
#include"stdlib.h"
//头文件预处理不用多说
int gys(int a,int b)//定义求最大公因数函数,返回整型
{
int r;//声明整型r接收余数
r=a%b;
while(r!=0)//若一直未除尽则一直循环
{
a=b;b=r;r=a%b;//这个则是开始我们的算法
//即用小数取模余数,再更新再循环
}
//除到余数为0说明找到了最大公因数,退出循环。
return b;//更新到最后的b就是最大公因数
}
int gbs(int a,int b)//定义寻找最小公倍数函数
{
return a*b/gys(a,b);//调用之前的最大公因数函数
//实现最大公因数和最小公倍数关系求出最小公倍数
}
int main()
{
int m,n;
scanf("%d%d",&m&n);//主函数输入m,n
printf("gys=%d/n",gys(m,n));//调用公因数函数并输出结果和换行
printf("gys=%d/n",gys(m,n));//调用公倍数函数并输出结果和换行
return 0;//程序结束
}
不懂再问!望采纳!
gys函数是辗转相除得最大公因数
gbs函数是通过两数相乘再除最大公因数求最小公倍数
main函数接收用户录入的两个数字,并将两数传递给函数形参,打印两函数返回值。