C语言三种算法求解最大公约数与最小公倍数

最大公约数与最小公倍数的求解是很多初学C的人所面临的一道问题。当然这道问题并不难解答,也有很多人已经写过相关的博客,我在此书写此篇博客,一是为了让自己能够夯实基础,另外就是希望能够帮到和我一样的初学者。

当然,在写这篇博客之前,我已经做过相关资料的调查,可能读者会发现此篇博客会与其他人的博客有所重复,但是,我保证绝未抄袭。好了,进入正题!

问题:请从键盘上输入两个数值 x,y,请用C语言求出这两个数值的最大公约数与最小公倍数。

首先,我们要想解决这道问题,就要了解什么是最大公约数与最小公倍数。

最大公因数;也称最大公约数、最大公因子,指两个或多个整数共有约数中最大的一个。----来源百度百科

最小公倍数:两个或多个整数公有的倍数叫做它们的公倍数。----来源百度百科

了解了其含义,接下来就是构思算法,通常而言,求解最大公约数有三种算法,而最小公倍数的求解,我们可以很容易的推断出,最小公倍数等于两个数值的乘积除以这两个数值的最大公约数。那么接下来的算法我将在此一一进行列举和解释。

1.辗转相除法:

又名欧几里德算法(Euclidean algorithm),它是已知最古老的算法, 其可追溯至公元前300年前。 ----来源百度百科

辗转:望文生义,就是翻来覆去。相除就很好理解了,就是进行除法运算。

辗转相除法的核心就是不断的让两个数做除法运算。其原理基于两个整数的最大公约数等于其中较小的数和两数的相除余数的最大公约数。

假设两数为 x,y。

先令 z = x % y ;

之后 y 赋给 x 即令  x = y ;

再将 z 赋给 y 即令  y = z;

辗转相减,其终止条件为:y 等于0时。

代码如下:

#include

int main()

{

int x, y, z, m, n;

printf("请输入两个数:");

scanf_s("%d%d", &x, &y);

m = x, n = y;

while (y != 0)

{

z = x%y;

x = y;

y = z;

}

printf("最大公约数是: %d\n", x);

printf("最小公倍数是: %d\n", m*n / x);

system("pause");

return 0;

}

2.辗转相减法:

即尼考曼彻斯法,其特色是做一系列减法,从而求得最大公约数。----来源百度百科

辗转相减法即通过对两数的不断减法运算。

假设两数为 x, y。

当 x > y 时,令 x = x - y;

反之,则令 y = y - x;

之后一直辗转相减,直至 x = y 时,终止。

代码如下:

#include

int main()

{

int x, y, m, n;

printf("请输入两个数:");

scanf_s("%d%d", &x, &y);

m = x, n = y;

while (x!=y)

{

if (x>y)

x = x-y;

else

y = y-x;

}

printf("最大公约数是: %d\n", x);

printf("最小公倍数是: %d\n", m*n / x);

system("pause");

return 0;

}

3.穷举法:

穷举法的基本思想是根据题目的部分条件确定答案的大致范围,并在此范围内对所有可能的情况逐一验证,直到全部情况验证完毕。----来源百度百科

穷举法又称枚举法,通过对数值范围内的所有数字进行检验,得出其结果。

代码如下:

#include

int main()

{

int x, y, i, m, n;

printf("请输入两个数:");

scanf_s("%d%d", &x, &y);

m = x, n = y;

for (i = x; i > 0; i--)

{

if (x%i == 0 && y%i == 0)

break;

}

printf("最大公约数是: %d\n", i);

printf("最小公倍数是: %d\n", m*n / i);

system("pause");

return 0;

}

以上即为求解最大公约数与最小公倍数的三种算法,如有纰漏,还请各位不吝赐教。

c语言 最大公约数 最小公倍数的编程,C语言三种算法求解最大公约数与最小公倍数...相关推荐

  1. 三种算法求解最大公约数和最小公倍数

    1.穷举法 穷举法的基本思想是:根据题目的部分条件确定答案的大致范围,并在此范围内对所有可能的情况逐一验证,直到全部情况验证完毕.若某个情况验证符合题目的全部条件,则为本问题的一个解:若全部情况验证后 ...

  2. java 求最大公因数_三种算法求最大公约数——Java实现 | 学步园

    求两个自然数m和n的最大公约数. 连续整除检测: 1. t=min{m,n}: 2. m除以t,如果余数为0,则执行步骤3,否则,执行步骤4: 3. n除以t,如果余数为0,返回t的值作为结果,否则, ...

  3. 三种算法求两个正整数的最大公约数和最小公倍数;求三个数的最大公约数和最小公倍数

    第二次作业 题目:求两个正整数的最大公约数和最小公倍数. 基本要求:1.程序风格良好(使用自定义注释模板),两种以上算法解决最大公约数问题,提供友好的输入输出. 提高要求:1.三种以上算法解决两个正整 ...

  4. c语言求最小公倍数和最大公约数三种算法

    C语言求最小公倍数和最大公约数三种算法(经典) 求最小公倍数算法: 最小公倍数=两整数的乘积÷最大公约数 求最大公约数算法: (1)辗转相除法 有两整数a和b: ① a%b得余数c ② 若c=0,则b ...

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

    C语言求最小公倍数和最大公约数三种算法(经典) 最小公倍数:数论中的一种概念,两个整数公有的倍数成为他们的公倍数,其中一个最小的公倍数是他们的最小公倍数,同样地,若干个整数公有的倍数中最小的正整数称为 ...

  6. C++算法:三种方法求最大公约数和最小公倍数

    三种方法求最大公约数和最小公倍数标题 首先明确最大公约数和最小公倍数的关系,设两个数为a,b:最大公约数为c,最大公倍数为d: 则ab=cd;怎么得到的可以通过数学算式证明. 分别用暴力搜索法,辗转相 ...

  7. 三种方法求最大公约数和最小公倍数

    最大公约数 最大公因数,也称最大公约数.最大公因子,指两个或多个整数共有约数中最大的一个. 最大公约数有多种方法,常见的有质因数分解法.短除法.辗转相除法.更相减损法. java代码中实现了这三种算法 ...

  8. c语言编程非线性方程求解,c语言计算机编程三种方法求解非线性方程

    c语言计算机编程三种方法求解非线性方程 本 科 专 业 学 年 论 文题 目:非线性方程求解比较姓 名: 何 娟 专 业: 计算机科学技术系 班 级: 08 级本科(2)班 指 导 老 师: 刘 晓 ...

  9. Python:三种方法计算最大公约数和最小公倍数(欧几里德法、穷举法、stein算法)

    Python:三种方法计算最大公约数和最小公倍数 1.穷举法 2.欧几里德法 3.Stein算法 题目:求取任意两个非负数(至多一个数为0)的最大公约数和最小公倍数: 参考资料:Python解决求最大 ...

最新文章

  1. 漫画:对象是如何被找到的?句柄 OR 直接指针?
  2. 关于布线设计方案+网络产品的一个网站
  3. php 7.1安装教程
  4. 程序解析excel中的图片_产品日志丨支持导入Excel中的图片amp;批量修改后期实体字段...
  5. 银联再发道歉声明;印度发布吃鸡禁令;甘肃全省校园禁售辣条;波音面临50亿罚款;女子撕扯民警头发罚两百;这就是今天的大新闻。...
  6. Java Stream Collectors.groupingBy()实现分组(单字段分组,多字段分组)
  7. 栈式降噪自编码器_栈式降噪自编码器( SdA)与深度信念网络(DBN)相比有什么特点优势,应用的范围是什么?...
  8. Ubuntu 10不能通过改source.list装JDK 1.6
  9. 电脑有网但是有的软件显示无网络连接服务器,有网络连接,但浏览器不能上网怎么办?电脑高手教你怎么解决...
  10. 如何理解运算放大器的增益带宽积-运放增益
  11. malloc和calloc异同
  12. 使用七牛云存储解决app部署问题,免申请https认证
  13. 随笔(2015.11)
  14. 键盘跟这台计算机连接的前一个usb,键盘跟这台计算机连接的前一个usb设备不正常...
  15. linux /etc/security/login.cfg,AIX用户管理
  16. 门禁系统服务器未连接,门禁系统一般故障处理方法及如何选择电插锁
  17. 远程桌面怎么记住登录计算机,大神处理windows10电脑远程桌面自动记录登录密码的具体操作办法...
  18. 千里之行,始于足下(二)-------创建基类
  19. 第四章:你造吗?CMOS传感器的构成与关键
  20. 博客营销BlogUp

热门文章

  1. 梯度算法之梯度上升和梯度下降
  2. Android学习之Ubuntu12.04
  3. Python游戏制作(一)
  4. HTML中的全屏设置
  5. 【机器人运动学/姿态角】欧拉角和RPY角
  6. 稳压二极管有什么特性?稳压二极管的特点
  7. OSI与TCP/IP协议簇、数据链路层
  8. 如何给行内元素设置宽高
  9. Linux文件导入gitee仓库中
  10. 为什么ES不适合做数据存储