思路:让 和
有共同质因子;任何共同质因子必整除
,所以枚举
的质因子
,取最小的
使
。
证明:若 且
,则
,所以这样的
必为
的因子;反之取
并令
即可使
同时整除
和
,若
则无解。
import sys
data=sys.stdin.read().split()
it=iter(data)
MOD=1e9+7
MOD2=998244353
def solve():
a,b=int(next(it)),int(next(it))
if a==b:
if a==1:
print(1)
return
else:
print(0)
return
d=abs(a-b)
s=int(d**0.5)
ans=10**30
for i in range(2,s+1):
if d%i==0:
g1=i
c=(g1-a%g1)%g1
if c<ans:
ans=c
g2=d//i
if g2>1:
c=(g2-a%g2)%g2
if c<ans:
ans=c
if d>1:
c=(d-a%d)%d
if c<ans:
ans=c
if ans==10**30:
print(-1)
else:
print(ans)
if __name__=="__main__":
_=1
#_=int(next(it))
for __ in range(_):
solve()

京公网安备 11010502036488号