按照欧几里得算法,编写程序,求用户从键盘输入的任意两个整数的最大公因数。

程序的运行结果如下所示:
输入:
120 80
输出:

40

分析:根据欧几里得算法

gcd(a,b)=gcd(b,a%b)证明

不妨假设 a>b

则a=k*b+r①

因为gcd是a、b的最大公约数,所以可以设a=gcd(a,b)*m②,b=gcd(a,b)*n③

联立上面的三个式子得gcd(a,b)*m=k*gcd(a,b)*n+r,整理得r=k*gcd(a,b)*n-gcd(a,b)*m,提取公因式得r=gcd(a,b)(n*k+m)

又因为r=a-k*b=a%b,所以gcd(a,b)=gcd(a,a%b)=gcd(b,a%b)

因此程序实现的依据就是

gcd(a1,b1)=gcd(b1,a1%b1)=gcd(a2,b2)=................=gcd(an-1,bn-1)=bn-1  (an-1%bn-1=0时) [或=gcd(an,bn)=an   (bn=0时)]

所以我们就可以用两种方法,递归和非递归两种做法来解决这个问题

#include<iostream>
using namespace std;
int gcd(int m, int n)    //递归算法
{if (n==0)   return m;return (gcd(n,m%n));
}int  gcd2(int m, int n)    //递推算法
{while (n>0){int tem=n;n=m%n;m=tem;}return m;
}
int main()
{int a,b,ans,tem;cin>>a>>b;if (a<b){tem=a;a=b;b=tem;  }ans=gcd2(a,b);cout<<ans;return 0;
}

求任意两个整数的最大公因数相关推荐

  1. 设计求任意两个整数和的web程序,用户通过提交页面(input.jsp)输入两个整数,并提交给一个(sum.jsp)程序

    张继军 董卫 <java web 应用开发技术与实案列教程>课后习题之第三章第4题 题解 题目内容 源代码 input.jsp sum.jsp positive.jsp negetive. ...

  2. java两个数之间质数求法,求任意两个整数之间质数的个数的代码!!!(新手编写)...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 /** * Title:Calculate acount of prime number between preNum and rearNum; * Au ...

  3. c语言,在主函数中输入一个整数,求该整数各位数字的乘积,[求助]求由键盘输入的任意两个整数的积...

    [求助]求由键盘输入的任意两个整数的积 [问题已解决] 我是才接触C的新手,一共才上了4节课,老师就出题了,请高手帮忙看看(如果愿意帮忙改的,请尽量不要改变原来的变量):--------------- ...

  4. 代码自测(输入任意两个整数,输出他们的最大公约数和最小公倍数 )-2021-7-16

    输入任意两个整数,输出他们的最大公约数和最小公倍数 package com.qianfeng.day04;import java.util.Scanner;public class Work04 {p ...

  5. C语言进阶之路:如何去求任意两个数字的加减乘除问题

    提示:可以参考博主之前的文章来写的代码去寻找思路 文章目录 思考一下 一.提示 二.根据任意两个整数的求和去书写关于任意两个整数的加减乘除代码 1简单编写 2.笔者建议 总结 思考一下: 提示:建议读 ...

  6. C语言设计函数求最大公约数,C语言程序设计课程设计--编写函数求取两个整数m,n的最大公约数和最小公倍数.doc_在线文库www.lddoc.cn...

    C语言程序设计课程设计--编写函数,求取两个整数m,n的最大公约数和最小公倍数.doc C语言程序设计课程设计C语言程序设计课程设计评语考勤(10)纪律(10)过程(40)设计报告(30)答辩(10) ...

  7. 利用函数求任意两个数之间的和

    利用函数求任意两个数之间的和 <!DOCTYPE html> <html lang="en"><head><meta charset=&q ...

  8. JavaScript-84:利用函数求任意两个数的和

    1 利用函数求任意两个数的和 function getSum (num, num1) {console.log(num + num1); } getSum(1, 2); getSum(1100, 30 ...

  9. JS学习之求带参函数求任意两个数和

    <!DOCTYPE html> <html><head><meta charset="utf-8"><title>带参函 ...

最新文章

  1. 2011清华MBA备考全记录
  2. 使用Struts2上传文件超过2M报错解决方法
  3. 密封表贴电感的漏磁以及在150kHz导航信号放大器中的性能
  4. 基于7个案例,分享我对“提示信息设计”的思考
  5. eb8000软件怎样上传_百度网盘如何免费上传超过4G的文件?BitComet来帮你!
  6. 深入理解最大池化为什么能够实现不变性?
  7. 史上最详细 DevC++无法运行正则表达式
  8. Windows Azure Web Site (15) 取消Azure Web Site默认的IIS ARR
  9. ros机器人导航设置原点,目标点
  10. (229)DPU加速数据处理
  11. javaWEB的三大组件(入门基础总结)
  12. SAP License:”事后借记”与第三方外币支付处理
  13. P3802 小魔女帕琪
  14. python加入小学课本_Python走进小学教材
  15. Flink流式计算在节省资源方面的简单分析
  16. 2020-12-26
  17. linux下mysql5.7环境
  18. GD32F103RC官方移植IAR
  19. ASP.NET Core (视频)教程汇总
  20. 启用计算机的快捷键,电脑启动热键对照表

热门文章

  1. Docker - 单独搭建部署应用服务(Nginx+Php+Mysql+Redis)
  2. Pytorch应用训练好的模型
  3. Typora快捷键大全(含Windows和mac)!提升你的写作效率
  4. intellij idea 合并分支到主分支,主分支代码同步到某一分支
  5. 【Linux】删除旧版本内核
  6. 需求调研(一)——调研流程和时间的把握
  7. 数据库设计(一) 需求分析
  8. 准确率、精确率、召回率、F1-score
  9. 绿厂Oppo年终刚刚开奖!只有去年的3-5折,员工心态炸了!
  10. 《图形图像处理》— 使用matlab对图像进行二值化和灰度化处理