已知x=a mod p,y=b mod p,求gcd(x,y) mod p的最大值

已知x≡a(modp),y≡b(modp)x\equiv a\pmod p,y\equiv b\pmod pxa(modp),yb(modp)d≡gcd(a,b)(modp)d\equiv gcd(a,b)\pmod pdgcd(a,b)(modp)最大值。p为素数

已知x≡a(modp),y≡b(modp)x\equiv a\pmod p,y\equiv b\pmod pxa(modp),yb(modp)d≡gcd(a,b)(modp)d\equiv gcd(a,b)\pmod pdgcd(a,b)(modp)最大值。p为素数。

1、当a=b=0a=b=0a=b=0时,x=k1p,y=k2px=k_1p,y=k_2px=k1p,y=k2p,无论k1,k2k_1,k_2k1,k2如何取值,gcd(x,y)≡0(modp)gcd(x,y) \equiv 0\pmod pgcd(x,y)0(modp)恒成立。

2、讨论其中一个为0的情况。不妨设b=0,我们可以构造出x=(p−a)(p−1),y=p(p−1)x=(p-a)(p-1),y=p(p-1)x=(pa)(p1),y=p(p1)
显然满足x≡a(modp),y≡b(modp)x\equiv a\pmod p,y\equiv b\pmod pxa(modp),yb(modp)
又因为gcd(p−a,p)=1gcd(p-a,p)=1gcd(pa,p)=1,所以gcd(x,y)=p−1gcd(x,y)=p-1gcd(x,y)=p1,此时的gcd在模p下取得最大值。

3、讨论a和b都不等于0的情况。不妨设a≥ba\ge bab,构造x=k1(p−1),y=k2(p−1)x=k_1(p-1),y=k_2(p-1)x=k1(p1),y=k2(p1),其中k1=p−a,k2=p−bk_1=p-a,k_2=p-bk1=pa,k2=pb,显然满足x≡a(modp),y≡b(modp)x\equiv a\pmod p,y\equiv b\pmod pxa(modp),yb(modp)
但是并不能保证gcd(k1,k2)=1gcd(k_1,k_2)=1gcd(k1,k2)=1,从而不能保证gcd(x,y)=p−1gcd(x,y)=p-1gcd(x,y)=p1
现在进一步的构造k1k_1k1
不妨设k1/=xp+k1k_1^/=xp+k_1k1/=xp+k1,因为gcd(k2,p)=1gcd(k_2,p)=1gcd(k2,p)=1,所以方程xp+yk2=1xp+yk_2=1xp+yk2=1 一定有整数解,从而我们可以通过扩展欧几里得算法解出正整数解x,那么有xp≡1(modk2)xp\equiv 1\pmod {k_2}xp1(modk2),从而我们可以构造出新的k1/=(k2−k1+1)xp+k1k_1^/=(k_2-k_1+1)xp+k_1k1/=(k2k1+1)xp+k1,此时的k1/k_1^/k1/满足k1/≡1(modk2)k_1^/\equiv 1\pmod {k_2}k1/1(modk2),从而gcd(k1/,k2)≡1(modk2)gcd(k_1^/,k_2)\equiv 1\pmod {k_2}gcd(k1/,k2)1(modk2),又因为k1≤k2k1\le k_2k1k2,所以gcd(k1/,k2)=1gcd(k_1^/,k_2)=1gcd(k1/,k2)=1,即k1/k_1^/k1/k2k_2k2互质。
从而x=k1/(p−a),y=k2(p−a),gcd(x,y)=p−1x=k_1^/(p-a),y=k_2(p-a),gcd(x,y)=p-1x=k1/(pa),y=k2(pa),gcd(x,y)=p1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值