rev[x]=(Ai=xrev[x]=(A_i=xとなるようなii、そのようなiiが存在しないなら-1))
div[x]={i  Ai0 (mod x)}div[x]=\{i\ |\ A_i \equiv0\ (mod\ x)\}
とします。

M=max(A)M=max(A)として、 div[x](1xM)div[x](1\leq x \leq M)は以下のように処理することでO(MlogM)O(M logM)で全てのxxについて求めることができます。

for x in range(M + 1):
    if x == 0:
        continue
    for i in range(x, M + 1, x):
        if rev[i] != -1:
            div[x].append(rev[i])

次に、全てのxxに対して、div[x]div[x]を昇順に並べ替えます。 あとは、クエリごとに、L,RL,Rについて、div[X]div[X]を2分探索することにより、 この問題を全体でO(M(logM)2+QlogN)O(M(logM)^2+QlogN)で解くことができます。