第一范文网 - 专业文章范例文档资料分享平台

最 小 公 倍 数 算 法 分 析( 2 0 2 0)

来源:用户分享 时间:2025/9/3 4:07:46 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

C语言求最小公倍数和最大公约数三种算法(经典)----ACM

【导师实战追-女孩资-源】【Q/Q:⒈016.x.⒐52б】 求最小公倍数算法:

最小公倍数=两整数的乘积÷最大公约数 求最大公约数算法: (1)辗转相除法 有两整数a和b: ① a%b得余数c

② 若c=0,则b即为两数的最大公约数 ③ 若c≠0,则a=b,b=c,再回去执行① 例如求27和15的最大公约数过程为:

27÷15 余1215÷12余312÷3余0因此,3即为最大公约数 1 #includestdio.h

2 int main() -* 辗转相除法求最大公约数 *- 4 int m, n, a, b, t, c;

5 printf(\ 6 scanf(\ 7 m=a; n=b;

8 while(b!=0) -* 余数不为0,继续相除,直到余数为0 *- 9 { c=a%b; a=b; b=c;}

10 printf(\

11 printf(\提供一种简写的方式: 1 int gcd(int a,int b) 3 return b==0?a:gcd(b,a%b); ⑵ 相减法 有两整数a和b: ① 若ab,则a=a-b ② 若ab,则b=b-a

③ 若a=b,则a(或b)即为两数的最大公约数 ④ 若a≠b,则再回去执行①

例如求27和15的最大公约数过程为: 27-15=12( 1512 ) 15-12=3( 123 ) 12-3=9( 93 ) 9-3=6( 63 ) 6-3=3( 3==3 ) 因此,3即为最大公约数 1 #includestdio.h

2 int main ( ) -* 相减法求最大公约数 *- 4 int m, n, a, b, c;

5 printf(\ 6 scanf (\

7 -* a, b不相等,大数减小数,直到相等为止。*- 8 while ( a!=b)

9 if (ab) a=a-b; 10 else b=b-a;

11 printf(\12 printf(\⑶穷举法 有两整数a和b:

② 若a,b能同时被i整除,则t=i ④ 若 i = a(或b),则再回去执行②

⑤ 若 i a(或b),则t即为最大公约数,结束 ① i= a(或b)

② 若a,b能同时被i整除,则i即为最大公约数, ③ i--,再回去执行② 有两整数a和b:

② 若a,b能同时被i整除,则t=i ④ 若 i = a(或b),则再回去执行②

⑤ 若 i a(或b),则t即为最大公约数,结束 ① i= a(或b)

② 若a,b能同时被i整除,则i即为最大公约数, ③ i--,再回去执行② 1 #includestdio.h

2 int main () -* 穷举法求最大公约数 *- 4 int m, n, a, b, i, t;

5 printf(\ 6 scanf (\ 7 for (i=1; i= a; i++) 8 if ( a%i == 0 b%i ==0 ) t=i;

9 printf(\10 printf(\12 -* 改进后的

13 for (t= a; t0; t-- )

14 if ( a%t == 0 b%t ==0 ) break; 1 --穷举法求最小公倍数 2 for (i= a; ; i++ )

3 if ( i % a == 0 i % b ==0 ) break;

4 printf(\ 6 --多个数的最大公约数和最小公倍数 7 for (i= a; i0; i-- )

8 if (a%i==0b%i==0c%i==0) break;

9 printf(\10 for (i= a; ; i++ )

11 if (i%a==0i%b==0i% c==0) break;

12 printf(\?printf(\

iLen = max(iLen, divide(a,iTimeArr,iPrimeArr,iPrimeLen));

2 int main ( ) -* 相减法求最大公约数 -

11 printf(\printf(\console.log(smallestCommons([23, 18])); this.minMulti = this._getMinMulti()

最大公约数和最小公倍数算法是数学界经典的算法之一。其中主要是西方的欧几米德算法(辗转相除法)和东方的《九章算术》更相减损法。在计算机界也有着广泛用法。本文主要是用java实现递归和循环方式来实现两种算法,至于原理性的文章请参照百度百科即可。

搜索更多关于: 最 小 公 倍 数 算 法 分 析( 2 0 2 0) 的文档
最 小 公 倍 数 算 法 分 析( 2 0 2 0).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c3tlxr71ria4g4gh0kzl91od1e2lmz900xvv_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top