求两个自然数的最大公约数

方法一:用短除法找出这两个自然数的所有公因子,将这些公因子相乘,得到这两个数的最大公约数

function getGDC(m,n){var gdc=1;for(var i=2;i<=m&&i<=n;i++){while(m%i==0&&n%i==0){gdc=gdc*i;m=m/i;n=n/i;}}return gdc;
}

方法二:用欧几里得算法,其基本思路是将两个数辗转相除直到余数为0

function getGDC(m,n){var r=m%n;while(r!=0){m=n;n=r;r=m%n;}return n;
}
/*使用递归代替循环
function getGDC(m,n){if(m%n==0){return n;}else{return getGDC(n,m%n);}
}*/

证明欧几里得算法

证明 GDC(a,b)=GDC(b,a mod b),其中a>b

令 r=a mod b,a可以被表示为 a=k* b+r ,r可以被表示为 r=a-k* b

假设d为(a,b)的一个公约数,即a和b都可以被d整除,则有 r/d=a/d-k *b/d

由等式右边可知 r/d 是一个整数,即d是r的一个约数,d是(b,a mod b)的一个公约数

因为(a,b)和(b,a mod b)的公约数相等,其最大公约数也相等

在编写代码时不用考虑让较大的数做被除数,较小的数做除数,因为若被除数小于除数,则余数为被除数,下次计算时的被除数就是较大数,除数是较小数。相较于被除数大于除数的情况只多了一次计算。

求两个自然数的最大公约数相关推荐

  1. 算法 求两个自然数的最大公约数 C++

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! //** ...

  2. 算法 - 求两个自然数的最大公约数(C++)

    分享一个大牛的人工智能教程.零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.net /** 求两个自然数的最大公约数 - C++ - b ...

  3. 【C语言】用函数实现求两个自然数的最大公约数

    #include <stdio.h> #include <stdlib.h> int ComFactor(int m, int n); int main() {     int ...

  4. 求两个自然数的最大公约数(3种方法)

    1.数学求解方法:将两个数分别质因数分解,然后找出所有公因子,并将其相乘. 分解质因数是一个NP完全问题 . 2.辗转相除法:求几个数的最大公约数,可以先求出其中任意两个数的最大公约数,再求这个最大公 ...

  5. C语言成绩abc,C语言常用经典代码:求三角形的面积、把百分制成绩转换为ABC等级制、其两个自然数的最大公约数和最小公倍数...

    C语言 经典常用代码 C语言常用经典代码 求三角形的面积. 把百分制成绩转换为ABC等级制. 其两个自然数的最大公约数和最小公倍数. 求输入n个数的平均值. 求一个数各个位上的数字之和. 求n个数的阶 ...

  6. 算法 求两个自然数的最小公倍数 C

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! //** ...

  7. ACMNO.22 C语言-公约公倍2 写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果两个整数由键盘输入。 输入 两个数 输出 最大公约数 最小公倍数

    题目描述 写两个函数,分别求两个整数的最大公约数和最小公倍数, 用主函数调用这两个函数,并输出结果两个整数由键盘输入. 输入 两个数 输出 最大公约数 最小公倍数 样例输入 6 15 样例输出 3 3 ...

  8. 使用函数求两个整数的最大公约数和最小公倍数

    <程序设计基础-c语言>杨莉 刘鸿翔 ISBN-978-7-03-032903-5 p240 习题7 3.编写两个函数,分别求两个整数的最大公约数和最小公倍数 #include<st ...

  9. c语言求出两个最大素数,求两个正整数的最大公约数      思路:这是一个很基本的问题,最常见的就是两种方法,辗转相除法和辗转相减法。通式分别为 f(x, y) = f(y, x%y...

    求两个正整数的最大公约数 思路:这是一个很基本的问题,最常见的就是两种方法,辗转相除法和辗转相减法.通式分别为 f(x, y) = f(y, x%y), f(x, y) = f(y, x - y) ( ...

最新文章

  1. 计算机视觉系列最新论文(附简介)
  2. 物体姿态估计数据集介绍
  3. python 事务操作_Python实现完整的事务操作示例
  4. java注销登录_java实现注销登录
  5. 斯坦福CS231n项目实战(四):浅层神经网络
  6. boost::nth_element相关的测试程序
  7. 我人傻了,火狐坏了,重启系统删了重下都搞不好那种,点开只有弹窗(已解决)
  8. 微信小程序 悬浮按钮
  9. 10大iOS开发者最喜爱的类库
  10. 在SpringBoot应用中获取应用上下文方法
  11. java基础自学教程_Java基础自学教程(全套)
  12. Spring Data + Thymeleaf 3 + Bootstrap 4 实现分页器
  13. 浙江开票系统服务器窗口,浙江增值税发票综合服务平台常见问题解答
  14. Kotlin 动态代理的使用以及一些坑点
  15. 如何删除下一页分节符_怎么去掉分节符下一页
  16. 【Linux】git提交三把斧
  17. 冰雪奇缘 --用爱铸就经典
  18. QListWidget removeItemWidget注意事项
  19. TMS320C6678开发笔记---IBL编译与分析5
  20. 林业行业上的调查规划设计资质办理管理办法

热门文章

  1. Spring给bean属性赋值的三种方式
  2. 计算机专业英语祈使句,常见英语祈使句类型解析,分类对比轻松学
  3. 树莓派控制WS2812屏幕(python)
  4. nba2k19显示服务器不可用,NBA2K19打不开怎么办 NBA2K19无法运行解决办法
  5. 我的第一篇博客:Python爬取新浪财经股票页面 并用matplotlib可视化输出结果
  6. 12-小程序(优购商城整合Vuex,发布H5和App兼容性问题解决,mpvue快速上手,mpvue项目结构,mpvue创建自己的页面,uniapp优购商城迁移到mpvue,mpvue坑点)
  7. 音乐能力与计算机能力结合,技能层次论文,关于中职计算机专业技能实训开发相关参考文献资料-免费论文范文...
  8. 论文解析[3] U-Net and its variants for Medical Image Segmentation : A short review
  9. 大脸猫:都什么时候了你居然还没有对象,你确定你不想来个对象吗?
  10. Windows10登录用户密码忘记了怎么办