如何用c语言求最大公约数和最小公倍数

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

<1> 用辗转相除法求最大公约数

算法描述:

m对n求余为a, 若a不等于0

则 m

否则 n 为最大公约数

<2> 最小公倍数 = 两个数的积 / 最大公约数

#include

int main()

{

int m, n;

int m_cup, n_cup, res; /*被除数, 除数, 余数*/

printf("Enter two integer:\n");

scanf("%d %d", &m, &n);

if (m > 0 && n >0)

{

m_cup = m;

n_cup = n;

res = m_cup % n_cup;

while (res != 0)

{

m_cup = n_cup;

n_cup = res;

res = m_cup % n_cup;

}

printf("Greatest common divisor: %d\n", n_cup);

printf("Lease common multiple : %d\n", m * n / n_cup);

}

else printf("Error!\n");

return 0;

}

★ 关于辗转相除法, 搜了一下, 在我国古代的《九章算术》中就有记载,现摘录如下:

约分术曰:“可半者半之,不可半者,副置分母、子之数,以少减多,更相减损,求其等也。以等数约之。”

其中所说的“等数”,就是最大公约数。求“等数”的办法是“更相减损”法,实际上就是辗转相除法。

辗转相除法求最大公约数,是一种比较好的方法,比较快。

对于52317和75569两个数,你能迅速地求出它们的最大公约数吗?一般来说你会找一找公共的使因子,这题可麻烦了,不好找,质因子大。

现在教你用辗转相除法来求最大公约数。

先用较大的75569除以52317,得商1,余数23252,再以52317除以23252,得商2,余数是5813,再用23252做被除数,5813做除数,正好除尽得商数4。这样5813就是75569和52317的最大公约数。你要是用分解使因数的办法,肯定找不到。

那么,这辗转相除法为什么能得到最大公约数呢?下面我就给大伙谈谈。

比如说有要求a、b两个整数的最大公约数,a>b,那么我们先用a除以b,得到商8,余数r1:a÷b=q1…r1我们当然也可以把上面这个式子改写成乘法式:a=bq1+r1------l)

如果r1=0,那么b就是a、b的最大公约数3。要是r1≠0,就继续除,用b除以r1,我们也可以有和上面一样的式子:

b=r1q2+r2-------2)

如果余数r2=0,那么r1就是所求的最大公约数3。为什么呢?因为如果2)式变成了b=r1q2,那么b1r1的公约数就一定是a1b的公约数。这是因为一个数能同时除尽b和r1,那么由l)式,就一定能整除a,从而也是a1b的公约数。

反过来,如果一个数d,能同时整除a1b,那么由1)式,也一定能整除r1,从而也有d是b1r1的公约数。

这样,a和b的公约数与b和r1的公约数完全一样,那么这两对的最大公约数也一定相同。那b1r1的最大公约数,在r1=0时,不就是r1吗?所以a和b的最大公约数也是r1了。

有人会说,那r2不等于0怎么办?那当然是继续往下做,用

c语言l利用辗转相除法约分,如何用c语言求最大公约数和最小公倍数相关推荐

  1. c语言辗转相除法素数,C|模数、素数,辗转相除法的证明及求最大公约数和最小公倍数...

    1 模数 "模"是指一个计量系统的计数范围.如时钟等.计算机也可以看成一个计量机器,它也有一个计量范围,即都存在一个"模".例如: 时钟的计量范围是0-11,模 ...

  2. c语言编程最大公约数穷举发,C语言基本算法 :1.求最大公约数与最小公倍数

    C语言基本算法 :1.求最大公约数与最小公倍数 一.最大公约数: 最大公约数目前有三种求法:更相减损术.辗转相除法以及穷举法. 1.更相减损术: 算法介绍:设两个整数数a和b,以较大数减较小数,得出的 ...

  3. c语言有参有类最小公倍数,C语言求最大公约数和最小公倍数算法

    C 语言求最大公约数和最小公倍数算法 C 语言求最大公约数和最小公倍数可以说是C 语言编程学习中一个重点和难点,它常常作为计算机专业学生参加各种考试必须要把握的内容.其算法方面除常用的辗转相除法外.还 ...

  4. C语言求最大公约数及最小公倍数

    C语言求最大公约数及最小公倍数 1. 最大公约数 1.1 定义 ​ 最大公约数(Greatest Common Divisor,GCD),也称最大公因数.最大公因子,是一种数学概念,指两个或多个整数共 ...

  5. C语言:1027.自定义函数求最大公约数和最小公倍数

    C语言:1027.自定义函数求最大公约数和最小公倍数 题目描述: 写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果两个整数由键盘输入. 解题思路: 1.利用辗转相 ...

  6. C语言 用更相减损术求最大公约数,最小公倍数

    更相减损术 更相减损术是出自<九章算术>的一种求最大公约数的算法,它原本是为约分而设计的,但它适用于任何需要求最大公约数的场合. 出处 <九章算术> 用途 求最大公约数 作用 ...

  7. C语言求最大公约数与最小公倍数

    该博文为原创文章,未经博主同意不得转载,如同意转载请注明博文出处 本文章博客地址:https://cplusplus.blog.csdn.net/article/details/105022773 求 ...

  8. c语言如何判断最小公倍数,c语言如何求最大公约数和最小公倍数?

    推荐教程:<C视频教程> c语言如何求最大公约数和最小公倍数? c语言求最大公约数和最小公倍数的方法: 求最大公约数算法: 有两整数a和b: ① a%b得余数c ② 若c=0,则b即为两数 ...

  9. 辗转相除法(欧几里得算法)求 最大公约数与最小公倍数+推论与证明。

    首先我们规定:0不参与公约数和公倍数的讨论 先来讨论最大公约数: 最大公约数求法:两个数的所有公共质数相乘. 考虑三个问题. 为什么是公共的:公共代表这个数可以被两个数都整除 为什么是质数:合数一定能 ...

最新文章

  1. 电源上的sense什么意思_冷知识:电源开关上的这两个标识有什么含义?
  2. 服务器中同一个【ip:port】可以多次accept的问题
  3. android编译error, forbidden warning出错问题解决
  4. docker-compose的介绍与安装(结合官方文档)
  5. 关于audio数据采集的问题
  6. scaleType属性设置!
  7. python greenlet背景介绍与实现机制
  8. 第三天 二列和三列布局
  9. 2021-4-28 合抱之木,生于毫末,九层之台,起于垒土
  10. python爬取微信公众号图片并生成word文档
  11. 获取海拔高度. 实时气压
  12. mysql中英文姓名按照首字母排序_mysql 汉字根据首字母排序
  13. 使用UUID生成32位ID
  14. centos 7安装matlab的两种方法(桌面安装和命令行安装)
  15. 快速学习-XXL-JOB调度中心/执行器 RESTful API
  16. 都吃移动营销饭,四大门户有什么不同姿势?
  17. Overlapping Experiment Infrastructure: More, Better, Faster Experimentation
  18. 4.20微众银行暑期实习前端一面
  19. Android App无法抓包的解决方案总结
  20. ethtool 命令详解

热门文章

  1. 内排序算法之冒泡排序
  2. Windows之系统自带截屏快捷键
  3. Eclipse Kepler (4.3.2) SR2 安装 Web Tools Platform (WTP)
  4. Spring Boot –如何更改Tomcat端口
  5. Spring Boot 内嵌Tomcat的端口号的修改
  6. 前端新手入门-有了这两个软件小工具学习事半功倍
  7. FFMpeg example:Filter详解
  8. 微信小程序开发教程5:设置全局css样式
  9. 使用php语言开发网站的注意事项
  10. 使用HTML和css制作简单的公司介绍网页