当前位置:   article > 正文

蓝桥杯刷题--python-36

蓝桥杯刷题--python-36

4199. 公约数 - AcWing题库


def gcd(a,b):
    while b:
        a,b=b,a%b
    return a

def init_divisors(a,b):
    d=gcd(a,b)
    i=1
    
    while i*i<=d:
        if d%i==0:
            ans.append(i)
            if i!=d//i:ans.append(d//i)
        i+=1
    ans.sort()


a,b=map(int,input().split())
ans=[]
init_divisors(a,b)
q=int(input())
for _ in range(q):
    L,R=map(int,input().split())
    l=0;r=len(ans)-1
    while (l<r):
        mid=l+r+1>>1
        if ans[mid]<=R:l=mid
        else: r=mid-1
    if ans[r]>=L:
        print(ans[r])
    else:
        print("-1")

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/380535
推荐阅读
相关标签
  

闽ICP备14008679号