算法导论-----数论-----最大公约数
2012-03-09 18:29
183 查看
1.p1p2…pr为素数
2. gcd(a,b)=gcd(b,amodb)
证明:(1)证gcd(a,b)|gcd(b,amodb)
令d=gcd(a,b)
d|a,d|b,a=b+amodb,amodb=a-b,所以d|amodb所以~
(2)证gcd(b,amodb)|gcd(a,b)
令d=gcd(b,amodb)
a=b+amodb,所以~
3.EUCLID(a,b)
{
If(b==0)
return 0;
else
return EUCLID(b,amodb);
}
4.若a>b>=1且EUCLID(a,b)执行了k>=1次递归调用,则a>=Fk+2,b>=Fk+1(用数学归纳法证明)
5.Lame定理:k>=1,a>b>=1,b<fk+1,则EUCLID执行递归少于k次
gcd(fk+1,fk)=gcd(fk,fk-1);EUCLID(fk+1,fk)恰好进行k-1次调用
6.EXTEND-EUCLID(a,b)
{
If(b==0)
return (a,1,0);
(d`,x`,y`)=EXTEND-EUCLID(b,amodb);
(d,x,y)=(d,y`,x`-(a/b)y`);
return (d,x,y);
}
时间复杂度 log(b);
7.d`=bx`+(amodb)y`;
d=bx`+(amodb)y`=ay`+b(x`-(a/b)y`);
2. gcd(a,b)=gcd(b,amodb)
证明:(1)证gcd(a,b)|gcd(b,amodb)
令d=gcd(a,b)
d|a,d|b,a=b+amodb,amodb=a-b,所以d|amodb所以~
(2)证gcd(b,amodb)|gcd(a,b)
令d=gcd(b,amodb)
a=b+amodb,所以~
3.EUCLID(a,b)
{
If(b==0)
return 0;
else
return EUCLID(b,amodb);
}
4.若a>b>=1且EUCLID(a,b)执行了k>=1次递归调用,则a>=Fk+2,b>=Fk+1(用数学归纳法证明)
5.Lame定理:k>=1,a>b>=1,b<fk+1,则EUCLID执行递归少于k次
gcd(fk+1,fk)=gcd(fk,fk-1);EUCLID(fk+1,fk)恰好进行k-1次调用
6.EXTEND-EUCLID(a,b)
{
If(b==0)
return (a,1,0);
(d`,x`,y`)=EXTEND-EUCLID(b,amodb);
(d,x,y)=(d,y`,x`-(a/b)y`);
return (d,x,y);
}
时间复杂度 log(b);
7.d`=bx`+(amodb)y`;
d=bx`+(amodb)y`=ay`+b(x`-(a/b)y`);
相关文章推荐
- (《数论及应用1.3》NEFU 116 两仪剑法(最小公倍数&&最大公约数))
- 最大公约数 数论
- 最大公约数 数论
- 集训第六周 数学概念与方法 概率 数论 最大公约数 G题
- FZU 1969 GCD Extreme,UESTC 1723 吴神的大脑: _数论好题(求1-n中所有数的最大公约数之和)
- [数论]数论的基础知识——最大公约数、最小公倍数
- ACM数论之旅3---最大公约数gcd和最小公倍数lcm(苦海无边,回头是岸( ̄∀ ̄))
- Bailian3248 最大公约数【数论】
- (《数论及应用1.3》NEFU 116 两仪剑法(最小公倍数&&最大公约数))
- Bailian3195 最大公约数【数论】
- 51nod 1040 最大公约数之和 | 数论
- 数论——最大公约数和最小公倍数算法
- 【数论】【最大公约数】【枚举约数】CODEVS 1012 最大公约数和最小公倍数问题 2001年NOIP全国联赛普及组
- 数论——最大公约数和最小公倍数算法
- BZOJ 2226 [Spoj 5971] LCMSum 最大公约数之和 | 数论
- (数论)最大公约数、最小公倍数、唯一分解定理
- 数论之大数取模和最大公约数
- 51NOD 1040 1040 最大公约数之和 数论 欧拉函数
- 51 NOD 1188 最大公约数之和 V2(基础数论)
- 20140926 【 初等数论 】 51nod 1179 . 最大的最大公约数