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

  • 原理
  • 代码

原理

辗转相除法求最大公约数
欧几里得在他的著作《几何原本》中给出了高效的解法——辗转相除法。辗转相除法使用到的原理:假设用f(x, y)表示x,y的最大公约数,取k = x/y,b = x%y,则x = ky + b,如果一个数能够同时整除x和y,则必能同时整除b和y;而能够同时整除b和y的数也必能同时整除x和y,即x和y的公约数与b和y的公约数是相同的,其最大公约数也是相同的,则有f(x, y)= f(y, x%y)(y > 0),如此便可把原问题转化为求两个更小数的最大公约数,直到其中一个数为0,剩下的另外一个数就是两者最大的公约数。
以求288和123的最大公约数为例,操作如下:
288÷123=2余42
123÷42=2余39
42÷39=1余3
39÷3=13
所以3就是288和123的最大公约数。

最小公倍数
(288 * 123) /3

代码

#include<iostream>
using namespace std;
int main()
{//求两个数的最大公约数和最小公倍数//最大公约数:辗转相除法,大数除以小数,在余数和小数中,再用大数除以小数,直到余数为0,此时小数就是最大公约数//最小公倍数:两数相乘再除以最大公约数就是最小公倍数int t = 1;//余数,赋值为1方便开启循环int m,n;cin >> m >>n;int num1 = m;int num2 = n;if (m > n){while (t != 0){t = m%n; //m是大数,n是小数,t是余数m = n;   //下次循环,小数和余数组成一对数再次相除n = t;}cout << "最大公约数:" << m << endl;int b = (num1 * num2) / m;cout << "最小公倍数:" << b << endl;} else if (m < n){while (t != 0){t = n%m; //m是大数,n是小数,t是余数n = m;   //下次循环,小数和余数组成一对数再次相除m = t;}cout << "最大公约数:" << n << endl;int b = (num1 * num2) / n;cout << "最小公倍数:" << b << endl;} else {cout << "最大公约数:" << m << endl;cout << "最小公倍数:" << m << endl;}}

C++输入两个正整数m和n,求其最大公约数和最小公倍数。相关推荐

  1. C语言学习之输入两个正整数m和n,求其最大公约数和最小公倍数。

    输入两个正整数m和n,求其最大公约数和最小公倍数. #include <stdio.h> void main(){int m,n,temp,p,r;printf("请输入两个正整 ...

  2. python输入两个正整数m和n用for循环求其最大公约数_输入两个正整数,m和n,求其最大公约数和最小公倍数。...

    1. 输入两个正整数, m 和 n ,求其最大公约数和最小公倍数. 2. 输入一行字符,分别统计出其中字母.空格.数字和其他字符的个数. 3. 输入一个正整数求出它是几位数:输出原数和位数. 4. 输 ...

  3. C语言_算法_输入两个正整数m和n,求其最大公约数与最小公倍数

    (1)方式一:碾转相除法 #include <stdio.h> #include <math.h> /*输入两个数,求最大公约数 与最小公倍数分析关系:最小公倍数=两数的积/最 ...

  4. c语言gcb最小公倍数,C编序编程题目:输入两个正整数m和n,求其最大公约数和最小公倍...,C语言编程,输入两个正整数M和N(MN),计算M和N...

    问题标题 C编序编程题目:输入两个正整数m和n,求其最大公约数和最小公倍...,C语言编程,输入两个正整数M和N(M 2019-3-27来自ip:15.121.164.188的网友咨询 浏览量:228 ...

  5. C语言输人两个正整数m和n,求其最大公约数和最小公倍数

    #include <stdio.h> int main() {int p, r, n, m, temp;printf("请输入两个正整数n,m:");scanf(&qu ...

  6. c语言输入两个正整数m和n求其最小公倍数,用C语言编写:输入两个正整数m和n,求其最大公约数和最小公倍数....

    用C语言编写:输入两个正整数m和n,求其最大公约数和最小公倍数. 來源:互聯網  2010-05-25 15:19:26  評論 分類: 電腦/網絡 >> 程序設計 >> 其他 ...

  7. 输入3个正整数,输出3个数的最大公约数和最小公倍数。

    #include<stdio.h> //碾转相除法,求两个数的最大公约数 int gcd(int x,int y){int r;while(r=x%y!=0){r=x%y;x=y;y=r; ...

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

    输入两个正整数m和n,求其最大公约数和最小公倍数. 解:程序: #include <stdio.h> int main() { int num1, num2, t,p; printf(&q ...

  9. Console-算法[if,while]-一输入两个正整数m和n,求其最大公约数和最小公倍数

    ylbtech-Arithmetic:Console-算法[if,while]-一输入两个正整数m和n,求其最大公约数和最小公倍数 1.A,Demo(案例) 输入两个正整数m和n,求其最大公约数和最小 ...

  10. ACMNO.7 输入两个正整数m和n,求其最大公约数和最小公倍数。 输入 两个整数 输出 最大公约数,最小公倍数 样例输入 5 7 样例输出 1 35

    题目描述 输入两个正整数m和n,求其最大公约数和最小公倍数. 输入 两个整数 输出 最大公约数,最小公倍数 样例输入 5 7 样例输出 1 35 来源/分类 C语言 示例照片: 设计思路: 本题最难的 ...

最新文章

  1. 了解ES6 The Dope Way Part II:Arrow功能和'this'关键字
  2. 那些总是写“烂代码”的同学,强烈推荐你用这款IDEA插件!
  3. 【高并发】ReadWriteLock怎么和缓存扯上关系了?!
  4. Linux下新建java程序,编译,运行(以Ubuntu为例)
  5. FPGA硬件构成详解
  6. 绘画 某种字体 以某种折行规则 最后画出的text有多大
  7. RocketMQ中的Topic和JMS的queue有什么区别?
  8. sTC8G1K08+通过串口显示内部电压_基于51单片机的数字电流电压表
  9. python输入一个字符一个数字_Python:如何只对字符串中的数字字符加/减一个数字?...
  10. 会计学硕和计算机,会计学与会计硕士有什么区别
  11. 联想怎么启用计算机的无线功能,IdeaCentre B3系列电脑无线连接中心的使用方法...
  12. android studio 融云,融云 SDK 集成详解 – Android Studio
  13. Kubernetes(k8s)之日志收集
  14. UVM设置超时退出timeout
  15. Apache服务器的下载、安装、配置等等
  16. 【3分钟速读】那些你苦苦搜索的模板,是这么被捣腾出来的
  17. c++ 小游戏 NO6 跑酷游戏
  18. 移动端身份证识别,APP证件信息采集
  19. vue中使用openlayers离线地图添加标点(二)
  20. (遇到问题)占用空间远大于文件本身---exFAT移动固态硬盘瞬间装满(已解决-文件系统和默认簇大小的原因)

热门文章

  1. 老泪纵横!伴随数代人成长的中国经典动画
  2. 163邮箱注册申请入口,申请163的邮箱账号
  3. 51nod 1459 1212
  4. 计算机网络是由网络硬件网络软件,计算机网络系统主要由网络硬件系统和网络软件系统组成。...
  5. js 日历,节假日,添加日志
  6. 研发岗位OKR的设计与激励 - 管理角度(附部分岗位样例)
  7. 计算机word怎么设置页眉,Word怎么设置长文档的页眉页脚?_计算机办公软件知识...
  8. 还不知道简历如何写?就该这样写!
  9. php美颜相机,手机照片美化软件哪个好|美颜相机官方版-官方版
  10. php 芝麻认证think_PHP调用芝麻信用接口API获取芝麻信用分数