辗转兮好玩
来源:互联网 发布:淘宝商城拍拍网 编辑:程序博客网 时间:2024/04/28 19:23
不知道什么是gcd,让我知道了什么是辗转相除。虽然很简单,但是我知道了,高兴了,然后记下来了,happiness可以很simpl嘛!
一、了解下最大公约数中的一些规则。最大公约数(greatest common divisor,简写为gcd;或highest common factor,简写为hcf),指某几个整数共有公约数中的最大一个。重要性质:
gcd(a,b)=gcd(b,a)
gcd(a,a)=|a|
gcd(a,0)=|a|
gcd(a,1)=1
gcd(a,b)=gcd(b, a mod b) (important!!!)
gcd(a,b)=gcd(b, a-b)
两个整数的最大公约数主要有两种寻找方法:
* 两数各分解质因子,然后取出同样有的项乘起来
* 辗转相除法
二、辗转相除法。辗转相除法, 又名欧几里德算法(Euclidean algorithm)乃求两个正整数之最大公因子的算法。它是已知最古老的算法, 其可追溯至3000年前。它首次出现于欧几里德的《几何原本》(第VII卷,命题i和ii)中,而在中国则可以追溯至东汉出现的《九章算术》。它并不需要把二数作质因子分解。
证明:
设两数为a、b(b<a),求它们最大公约数(a、b)的步骤如下:用b除a,得a=bq......r 1(0≤r)。若r1=0,则(a,b)=b;若r1≠0,则再用r1除b,得b=r1q......r2 (0≤r2).若r2=0,则(a,b)=r1,若r2≠0,则继续用r2除r1,……如此下去,直到能整除为止。其最后一个非零余数即为(a,b)。
写成算法:
【递归形式】
function gcd(a, b) {
if b<>0
return gcd(b, a mod b);
else
return a;
}
【纯循环形式】
function gcd(a, b) {
define r as integer;
while b ≠ 0 {
r := a mod b;
a := b;
b := r;
}
return a;
}
用python小语言读取prog0.in中的数对,输出其最大公约数,代码如下:
import sys
def gcd(m,n):
if n==0:return m
else:return gcd(n,m%n)
f=open("E://Topic//Python//sample//prog0.in","r")
s=f.readlines()
i=0
while(i<len(s)):
t=s[i].split(" ")
print gcd(int(t[0]),int(t[1]))
i=i+1
f.close()
- 辗转兮好玩
- 好玩
- 好玩
- 好玩
- 好玩
- 呵呵 CSDN好玩好玩
- 辗转时光
- 飛飛(六十九)好玩好玩好玩
- 呵呵,好玩.......
- 好玩不?
- 超级好玩
- 纯属好玩
- 统计分析--好玩
- 好玩的...
- 好玩的
- 辗转相除法
- 辗转相除法
- 阵地辗转,从新开始。
- 日立承认操纵LCD价格将支付3100万美元罚款
- CS人物有多少种动作
- git 打包的一个bash 函数
- c++对象模型系列
- IT企业合理避税各有妙招 效果不同有人欢喜有人忧
- 辗转兮好玩
- tcl/tk对操作系统中未设置变量的操作技巧
- 判断临时表是否存在
- punycode和中文相互转换
- 我的程序人生(1)
- csdn
- tcl/tk 访问oracle 时,使用oratcl 乱码问题
- 传IE8将成为微软最后一款IE核心的浏览器?
- Array to Stack