输入两个正整数m和n,求最大公约数和最小公倍数收获

自己写的代码比较复杂吧,用的知识是整本书,但是还不连贯,搜了一下答案它的篇幅更小,更简洁。
首先是确保输入的值如a,b大的值为a(因为a,b的大小关系并不重要,主要是用大值)而我分别比较列两个;
其次是在辗转相除的时候
r = a % b; while (r != 0) { a = b; b = r; r = a % b; }
这个思想很值得借鉴。
1.最大公约数求法
1.1辗转相除法
设有两整数a和b:

a%b得余数c
若c0,则b即为两数的最大公约数
若c!=0,则a=b,b=c,再回去执行第一步。
例如:求27和15的最大公约数过程为:
27÷15 余12
15÷12 余3
12÷3 余0
因此,3即为最大公约数。
2相减法
设有两整数a和b:
若a>b,则a=a-b
若a<b,则b=b-a
若a
b,则a(或b)即为两数的最大公约数
若a!=b,则再回去执行第一步。
例如:求27和15的最大公约数过程为:
27-15=12( 15>12 )
15-12=3( 12>3 )
12-3=9( 9>3 )
9-3=6( 6>3 )
6-3=3( 3==3 )
因此,3即为最大公约数。
2.最小公倍数求法
最小公倍数=两整数的乘积÷最大公约数。

posted @ 2024-12-26 20:13  崩溃的小孙  阅读(13)  评论(0编辑  收藏  举报