C++计算最大公约数(辗转相除法)

原创 2012年04月13日 15:54:41

典型例题:

一.辗转相除法

例1 。求两个正数8251和6105的最大公因数。

(分析:辗转相除→余数为零→得到结果)

解:8251=6105×1+2146

显然8251与6105的最大公因数也必是2146的因数,同样6105与2146的公因数也必是8251的因数,所以8251与6105的最大公因数也是6105与2146的最大公因数。

6105=2146×2+1813

2146=1813×1+333

1813=333×5+148

333=148×2+37

148=37×4+0

则37为8251与6105的最大公因数。

以上我们求最大公因数的方法就是辗转相除法。也叫欧几里德算法,它是由欧几里德在公元前300年左右首先提出的。

1. 为什么用这个算法能得到两个数的最大公因数?

利用辗转相除法求最大公因数的步骤如下:

第一步:用较大的数m除以较小的数n得到一个商q0和一个余数r0

第二步:若r0=0,则n为m,n的最大公因数;若r0≠0,则用除数n除以余数r0得到一个商q1和一个余数r1

第三步:若r1=0,则r1为m,n的最大公因数;若r1≠0,则用除数r0除以余数r1得到一个商q2和一个余数r2

……

依次计算直至rn=0,此时所得到的rn-1即为所求的最大公因数。

 

 

练习:利用辗转相除法求两数4081与20723的最大公因数。

 

 

 

 

2。辗转相除法包含重复操作的步骤,因此我们可用__循环_______结构来构造算法,

利用辗转相除法求最大公因数的步骤:




解析:求最大公约数的“辗转相除法原理”

解析:求最大公约数的“辗转相除法原理”
  • u013409439
  • u013409439
  • 2015年04月28日 14:49
  • 3047

C语言第七篇:辗转相除法求最大公约数

辗转相除法求最大公约数
  • qq_30866297
  • qq_30866297
  • 2016年03月24日 11:35
  • 4804

辗转相除法求最大公约数(C语言)

用辗转相除法求最大公约数 算法描述: m对n求余为a, 若a不等于0 则 m
  • leaf6094189
  • leaf6094189
  • 2011年05月25日 10:20
  • 21083

C#辗转相除法求最大公约数与最小公倍数

class Program { static void Main(string[] args) { int num1, num2...
  • sangjisuonan
  • sangjisuonan
  • 2017年02月28日 10:25
  • 1983

C++算法 - 辗转相除法(求最大公约数)

问题及代码: /* * Copyright (c) 2014, 烟台大学计算机与控制工程学院 * All rights reserved. * 文件名称:.cpp * 作 者:何小乐 * 完成...
  • hexiaole1994
  • hexiaole1994
  • 2014年10月29日 22:19
  • 6108

辗转相除法求最大公约数的原理

【注】本文内容整理自网上下载的一个课件,具体来源不详。 在中国古代就有一个很好的算法来计算a,b的最大公约数(a,b),称为辗转相除法,在西方称为Euclid算法。 下面通过计算(1397...
  • yy13210520
  • yy13210520
  • 2011年09月13日 16:15
  • 8450

C++三种方法求解两个数最大公因数和最小公倍数

本人最近学习了三种求解两个数最大公因数的方法,第一种是辗转相除法,第二种是相减法,第三种是穷举法 方法一:辗转相除法: 首先判断m是否小于n,不然交换两个值,始终保持m永远是最大的值,求余d=m%n...
  • qq_33783291
  • qq_33783291
  • 2017年03月22日 18:25
  • 1523

如何在C++中实现求两个整数的最大公约数和最小公倍数

原帖地址:http://blog.sina.com.cn/s/blog_6ff1f2130100v3xz.html 最大公约数: 如果有一个自然数a能被自然数b整除,则称a为b的倍...
  • D_zhangzehou
  • D_zhangzehou
  • 2015年10月26日 22:13
  • 2885

欧几里德辗转相除法求最大公约数的C++实现

  • 2011年07月24日 12:14
  • 370B
  • 下载

【C++解题报告】求最大公约数问题(辗转相除法)

题目来源:     基础班《函数、递推、递归》,递归第5题。     北大OJ-NOI 2.2基本算法之递归和自调用函数  7592 描述:          总时间限制:1000ms  内存...
  • gatsby1874
  • gatsby1874
  • 2016年12月31日 23:18
  • 805
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++计算最大公约数(辗转相除法)
举报原因:
原因补充:

(最多只允许输入30个字)