【C语言】求最小公倍数和最大公约数(辗转相除法)

【C语言】求最小公倍数和最大公约数(辗转相除法)用到的名词:最小公倍数,最大公约数,辗转相除法一、名词解释:1).最小公倍数:最小公倍数(LeastCommonMultiple,LCM),如果有一个自然数a能被自然数b整除,则称a为b的倍数,b为a的约数,对于两个整数来说,指该两数共有倍数中最小的一个。计算最小公倍数时,通常会借助最大公约数来辅助计算。 最小公倍数=两数的乘积/最大公约(因)数,解题时要避免和最大公约(因)…

大家好,又见面了,我是你们的朋友全栈君。

用到的名词:最小公倍数最大公约数辗转相除法

一、名词解释:

1).最小公倍数:

最小公倍数(Least Common Multiple,LCM),如果有一个自然数a能被自然数b整除,则称a为b的倍数,b为a的约数,对于两个整数来说,指该两数共有倍数中最小的一个。计算最小公倍数时,通常会借助最大公约数来辅助计算。

最小公倍数=两数的乘积/最大公约(因)数,解题时要避免和最大公约(因)数问题混淆。

对于最小公倍数的求解,除了利用最大公约数外,还可根据定义进行算法设计。要求任意两个正整数的最小公倍数即,求出一个最小的能同时被两整数整除的自然数。

 

 

 

 

 

2).最大公约数

如果有一个自然数a能被自然数b整除,则称a为b的倍数,b为a的约数。几个自然数公有的约数,叫做这几个自然数的公约数。公约数中最大的一个公约数,称为这几个自然数的最大公约数。

根据约数的定义可知,某个数的所有约数必不大于这个数本身,几个自然数的最大公约数必不大于其中任何一个数。要求任意两个正整数的最大公约数即求出一个不大于其中两者中的任何一个,但又能同时整除两个整数的最大自然数。

 

 

 

 

3).辗转相除法

辗转相除法, 又名欧几里德算法(Euclidean algorithm),是求最大公约数的一种方法。它的具体做法是:用较小数除较大数,再用出现的余数(第一余数)去除除数,再用出现的余数(第二余数)去除第一余数,如此反复,直到最后余数是0为止。如果是求两个数的最大公约数,那么最后的除数就是这两个数的最大公约数。

 

 

 

二、算法思想

        利用格式输入语句将输入的两个数分别赋给 a 和 b,然后判断 a 和 b 的关系,如果 a 小于 b,则利用中间变量 t 将其互换。再利用辗转相除法求出最大公约数,进而求出最小公倍数。最后用格式输出语句将其输出。

三、代码实现:

1.手机用户(贴图):

【C语言】求最小公倍数和最大公约数(辗转相除法)

2.代码:

#include <stdio.h>
  2 int main()
  3 {
  4     int a,b,c,m,t;
  5     printf("请输入两个数:\n");
  6     scanf("%d%d",&a,&b);
  7     if(a<b)
  8     {
  9         t=a;
 10         a=b;
 11         b=t;
 12     }
 13     m=a*b;
 14     c=a%b;
 15     while(c!=0)
 16     {
 17         a=b;
 18         b=c;
 19         c=a%b;
 20     }
 21     printf("最大公约数是:\n%d\n",b);
 22     printf("最小公倍数是:\n%d\n",m/b);
 23 }

3.效果图:

【C语言】求最小公倍数和最大公约数(辗转相除法)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/145322.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • BugkuCTF 部分题解(随缘更新)

    BugkuCTF 部分题解(随缘更新)之前做的题在佛系更新等假期抽空做bugku佛系更新MISC简单取证1南城旧梦成果狗成果狗MISC简单取证1下载得到windows系统下一个目录,获取用户名和密码需要用SAM和system两个文件。把SAM和SYSTEM文件放到Win32文件夹下,运行mimikatz,执行命令所以flag{administrator-QQAAzz_forensics}南城旧梦mmz.bmp文件尾有一段DE@@=<6J:DB625K4,rot47解码后得到stoolkeyisqeadzc意思是使

    2022年7月11日
    28
  • 微信看一看有访客记录吗_微信到底能不能看访客

    微信看一看有访客记录吗_微信到底能不能看访客这个访客神器,不仅可以看到多少人看了你的朋友圈。还可以知道他们是谁,看了多久…

    2022年9月18日
    2
  • .NETFramework类库命名空间 – asp.net 教程-「建议收藏」

    .NETFramework类库命名空间 – asp.net 教程-「建议收藏」.NETFramework类库

    .NETFramework类库是一个由Microsoft.NETFrameworkSDK中包含的类、接口和值类型组成的库。该库提供对系统功能的访问,是建立.NETFramework应用程序、组件和控件的基础。 命名空间
    .NETFramework类库提供下列命名空间:Microsoft.Aspnet.Snapin
    包含使Microsoft®InternetInformationServer管理

    2022年7月11日
    32
  • jquery 使用dialog弹窗显示在整个屏幕上,而不是只遮盖当前的ifream或div,另附dialog中加返回按钮,设置高宽等「建议收藏」

    jquery 使用dialog弹窗显示在整个屏幕上,而不是只遮盖当前的ifream或div,另附dialog中加返回按钮,设置高宽等「建议收藏」jquery 使用dialog弹窗显示在整个屏幕上,而不是只遮盖当前的ifream或div,另附dialog中加返回按钮,设置高宽等

    2022年4月23日
    49
  • getchar的用法举例_c语言strlen函数用法

    getchar的用法举例_c语言strlen函数用法在K&R的开头碰到了getchar函数的用法有些迷糊,在查找了一些资料以及动手实践后有了大致的了解。getchar函数,是从缓冲区读取数据的,而不是直接从键盘输入中读取数据的键盘的输入会保存在缓冲区中,同时会显示在屏幕上getchar函数执行时,每次从缓冲区中读取一个字符键盘输入enter或者ctrl+D后,getchar会检查缓冲区中是否有数据,如果有的话,会开始读…

    2022年10月9日
    4
  • LTE-FDD和LTE-TDD的区别

    LTE-FDD和LTE-TDD的区别注:本篇大部分内容源自“再见理想”的博客园,详细链接:https://www.cnblogs.com/exmyth/p/4572934.html1.什么叫LET4G故名思议就是第四代移动电话行动通信标准,其中包括TD-LTE(国外称作LTE-TDD,叫法不同,意思是一样的)和FDD-LTE两种制式。而中移动使用的就是TD-LTE,中联通与中电信则是使用TD-LTE与FDD-LTE…

    2022年6月5日
    38

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号