算法(第4版) 学习笔记一——求最大公约数
来源:互联网 发布:新疆大学网络教育平台 编辑:程序博客网 时间:2024/06/06 05:41
算法是解决某种问题的方法,这种方法与编程语言无关。
要定义一个算法,首先可以用自然语言将它描述出来,再将它转成编程语言。
求最大公约数问题的自然语言算法描述:
计算两个非负整数p和q的最大公约数:若q是0,则最大公约数为p。否则,将p除以q得到余数r,p和q的最大公约数即为q和r的最大公约数。
证明:
假设p比q大,那么 p = kq + r
………………(1)
k为p除以q得到的商,r为余数,这里的r不为0
假设p和q的其中一个公约数为x,那么 p = mx
………………(2) q = nx
………………(3)
将(2)和(3)代入(1),可得到 mx = knx + r
………………(4)
两边同除以x,得到 m = kn + r/x
………………(5)
因为m、k和n都是正整数,所以r/x也是正整数。
换句话说,p和q的任意一个公约数都可以整除r,所以p、q、r的所有公约数相等,那么最大公约数也相等,那么求p和q的最大公约数就可以转化为求q和r的最大公约数。
java语言描述
//此方法默认p>qpublic static int gcd(int p, int q) { if(q==0) return p; int r = p % q; return gcd(q, r);}
0 0
- 算法(第4版) 学习笔记一——求最大公约数
- 算法学习---求最大公约数(Gcd算法)
- 基础算法—求最大公约数
- 数据结构与算法学习笔记(一)最大公约数与最小公倍数
- C语言经典算法(一)——求最大公约数的四种方法
- 简单经典算法——欧几里德算法(求最大公约数)
- 第四周项目1——(1)求最大公约数
- 第四周项目1——(2)求最大公约数
- 算法学习十六----求最大公约数
- 第四周项目一(1)-求最大公约数
- 欧几里得算法——求最大公约数
- Stein算法——求最大公约数
- 求最大公约数——欧几里得算法
- 2011级Java第1周(春)项目——一求两个整数的最大公约数的程序
- 第四周项目一求最大公约数
- 第四周项目一求最大公约数
- 第四周 项目一 求最大公约数
- 第四周项目一求最大公约数
- poj 3984 迷宫问题(bfs)
- 输入框内容偏右,与左侧边缘有一定距离
- Android JSON解析库Gson和Fast-json的使用对比和图书列表小案例
- 硬货
- 我为什么要写博客?及博客学习的方法
- 算法(第4版) 学习笔记一——求最大公约数
- 【Hibernate框架学习】:Hibernate进阶之持久化对象状态
- jQuery插件之ajaxFileUpload
- ThinkPHP使用header()的问题
- java大全
- hadoop 2.6.0 伪分布式搭建
- win10去掉设置Ctrl+Alt+↑/↓(上、下键)避免与eclipse快捷键冲突,去Fn刷新设置
- Unity 游戏框架搭建 (一) 概述
- SecureCRT常用命令