首页 理论教育 如何求最大公因子?

如何求最大公因子?

时间:2023-07-02 理论教育 版权反馈
【摘要】:因此,在设计求两个整数的最大公因子的算法时只需要考虑正整数。定义11.5 如果两个整数a和b的最大公因子为1,即gcd(a,b)=1,则称这两个整数互素。另外,关于最大公因子还有下面的定理。应用模运算可以将定理11.8表述为另一种形式:对任意的整数a和b,有gcd(a,b)=gcd根据前面的分析,只要重复地执行上式直到后面的一项为0,前面的数即为这两个数的最大公因子。

如何求最大公因子?

定义11.4 对于整数abc,如果c|ac|b,则称cab的公因子(或公约数)。其中最大的公因子称为最大公因子(或最大公约数)。ab的最大公因子d满足以下条件:d>0,d|ad|b,且对ab的任意公因子c,有c|d。一般记ab的最大公因子为gcd(ab)或者简记为(ab)。

显然,对于最大公因子有下面的结果:

1)对任意的整数ab,gcd(a,0)=|a|,gcd(ab)=gcd(|a|,|b|)。因此,在设计求两个整数的最大公因子的算法时只需要考虑正整数。

2)对任意的正整数m,有gcd(ambm)=gcd(abm

3)设h|ah|bh>0,则gcd(a/hb/h)=gcd(ab/h

4)若ab是两个不全为0的整数,则存在整数st,使得as+bt=gcd(ab)。

定义11.5 如果两个整数ab的最大公因子为1,即gcd(ab)=1,则称这两个整数互素。互素具有以下基本性质:

1)如果gcd(ab)=1,gcd(ac)=1,则gcd(abc)=1。

2)如果gcd(ab)=1,且a|bc,则a|c

3)如果gcd(ab)=1,且a|cb|c,则ab|c

4)如果gcd(ab)=1,则存在整数st,使得as+bt=1。

另外,关于最大公因子还有下面的定理。

定理11.8 如果a=bq+rb≠0且abqr为整数,则

gcd(ab)=gcd(br)。

根据表达式a=bq+r可知,如果dab的公因子,则d|ad|b,故d|(a-bq),d|r,所以d也是br的公因子,即abbr的公因子相同。

这个定理给出了求最大公因子的方法,称为辗转相除法,也称为欧几里得(Euclid)算法。其具体思想描述如下:

ab是两个非零的整数,且b不整除a,则根据带余除法定理可以写出一串等式

由于余数r1r2>…>ri>…,即每进行一次带余除法,余数至少要减1,而|b|是一个有限的正整数,有限步后,这一计算过程必然要终止,因而我们总可以得到一个余数是零的等式,即rn+1=0。根据以上定理可知,gcd(ab)=gcd(br1)=gcd(r1r2)=…=gcd(rnrn+1)=rn

应用模运算可以将定理11.8表述为另一种形式:对任意的整数ab,有

gcd(ab)=gcd(ba(mod b))

根据前面的分析,只要重复地执行上式直到后面的一项为0,前面的数即为这两个数的最大公因子。此思想可用以下欧几里得算法描述为:(www.xing528.com)

EUCLID(ab且满足ab>0)

1)XaYb

2)如果Y=0,则输出X=gcd(ab);

3)RX(mod Y);

4)XY

5)YR

6)转到2)。

此算法中只涉及正整数,最大公因子与整数的符号没有关系。

【例11-16】 设a=3371,b=1435,计算gcd(ab)。

【解析】 由于 3371=2×1435+501

1435=2×501+433

501=433+68

433=6×68+25

68=2×25+18

25=18+7

18=2×7+4

7=4+3

4=3+1

3=3×1

所以gcd(3371,1435)=1

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈