“关于约分问题,实质是如何求分子,分母最大公约数的问题.《九章算术》中介绍了这个方法,叫做”更相减损术”,即“可半者半之,不可半者,副置分母、子之数,以少减多,更相减损,求其等也。以等数约之。”
  翻译成现代语言如下:
  第一步:任意给定两个正整数;判断它们是否都是偶数。若是,则用2约简;若不是则执行第二步。
  第二步:以较大的数减较小的数,接着把所得的差与较小的数比较,并以大数减小数。继续这个操作,直到所得的减数和差相等为止。
  则第一步中约掉的若干个2与第二步中等数的乘积就是所求的最大公约数。
  其中所说的“等数”,就是最大公约数。求“等数”的办法是“更相减损”法。所以更相减损法也叫等值算法。

已知两个不大于maxint型正整数a,b,求其最大公约数。(a,b不一定是偶数

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

int GCD(int a,int b)

{

    int ans=1;//储存第一步中约掉的若干个2

    int gcd;//储存最终返回的结果 

    while(a%2==0  &&  b%2==0)//如果ab均为偶数则用2约简 

    {

        a/=2;

        b/=2;

        ans*=2; 

    }

    //用这种方法有可能减少数字的位数,简化计算,可以省略。 

    

    while(a!=b)//判断两数是否相等,也可以理解为直到所得的减数和差相等为止

        if(a>b)

            a-=b;//以较大的数减较小的数

        else

            b-=a;//以较大的数减较小的数

    gcd=a*ans; //求第一步中约掉的若干个2与第二步中等数的乘积 

    

    return gcd;//返回gcd

}

九章算术更相减损术的的c语言实现相关推荐

  1. 《九章算术》中更相减损术----求最大公约数

    更相减损法:也叫更相减损术,是出自<九章算术>的一种求最大公约数的算法,它原本是为约分而设计的,但它适用于任何需要求最大公约数的场合. #include<stdio.h> in ...

  2. 五十六、从高中碾转相除法、更相减损术算法谈起

    @Author:Runsen 编程的本质来源于算法,而算法的本质来源于数学,编程只不过将数学题代码化. ---- Runsen 先问你们一个小学问题:如何求两个整数的最大公约数? 曾经见过不少的算法题 ...

  3. Python使用更相减损术计算两个整数的最大公约数

    更相减损术是<九章算术>中给出的一种用于约分的方法,也可以用来计算最大公约数,其步骤为: 1)如果两个整数都是偶数,就使用2约简,直到两个整数不再都是偶数,然后执行第2步.如果两个整数不都 ...

  4. C++算法:辗转相除法与更相减损术

    辗转相除法与更相减损术 1.我们已经学过求最大公因数的知识,你能求出18与30的公因数吗? 2.如果公因数比较大而且根据我们的观察又不能得到一些公因数,我们又应该怎样求它们的最大公因数?比如求8251 ...

  5. 更相减损术程序设计c语言,更相减损术

    本词条缺少概述图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧! 更相减损术是出自<九章算术>的一种求最大公约数的算法,它原本是为约分而设计的,但它适用于任何需要求最大公约数的场合 ...

  6. 更相减损术,辗转相除法

    一,更相减损术是出自<九章算术>的一种求最大公约数的算法,它原本是为约分而设计的,适用于任何需要求最大公约数的场合. 证明: 设gcd(x,y)=d,则满足x=k1*d,y=k2*d,易得 ...

  7. 【C语言】辗转相除法+更相减损术+秦九韶算法

    一.辗转相除法 1.简介 辗转相除法又叫欧几里得算法. 假如需要求 1997 和 615 两个正整数的最大公约数,用欧几里得算法,是这样进行的: 1997 / 615 = 3 (余 152) 615 ...

  8. 更相减损法java代码_Python基于更相减损术实现求解最大公约数的方法

    本文实例讲述了Python基于更相减损术实现求解最大公约数的方法.分享给大家供大家参考,具体如下: 先从网上摘录一段算法的描述如下: 更相减损法:也叫 更相减损术,是出自< 九章算术>的一 ...

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

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

最新文章

  1. java编程思想 入门_java编程思想学习(基础)
  2. python入门指南pdf-跟老齐学Python+从入门到精通 PDF 下载
  3. MSM8974 fastboot烧写软件
  4. 更新整理本人所有博文中提供的代码与工具(C++,2013.11)
  5. Qt样例学习1(数字时钟)
  6. 分析JQ作者的类实现过程
  7. 【滤波器】基于matlab GUI高通+低通+带通+带阻FIR滤波器设计【含Matlab源码 699期】
  8. Spring-xsd文件-配置文件
  9. html完全自学手册,完全自学手册PHP+Ajax(PPT) 第3章 HTML基础.ppt
  10. Unity3D插件 Doozy UI 学习(三):UI Element
  11. Linux监控服务之zabbix
  12. 【CSS】关于 z-index,你可能一直存在误区
  13. 怎么注册微信公众平台
  14. 互联网未来30年发展的大趋势,专家:竞争会更激烈!
  15. App架构经验总结(转)
  16. 入职3个月的Java程序员面临转正,领导:1年工作经验包装成5年,试用期淘汰!
  17. 【转】互联网女皇发布2012互联网趋势报告, 对我们有所帮助
  18. 可能是其他人在试图访问您的 Google 帐号。为了安全起见,您暂时无法登录。 请稍后重试,或使用其他设备登录。
  19. 简易的服务器接口开发入门教程
  20. OpenCV检测眨眼

热门文章

  1. DDD之Domain Primitive(DP)
  2. 三星s4开机显示无服务器,三星S4无法连接电脑,USB连接后手机只出现充电提示,电脑无反应...
  3. excel 第11讲:Vlookup函数
  4. hgame-2023-week4
  5. pppoe错误代码 linux,Windows各操作系统常见PPPoE拨号错误代码说明
  6. 配置TZC400 bypass透传方法
  7. 【应用】使用STM32单片机定时器的Encoder模式驱动数字旋转编码开关
  8. APP登录界面(网页仿制版)
  9. Linux下CenterOS 7之网络连接方式及NAT网络配置
  10. 关于itouch/ipad 等设备的飞行模式