Aの制約が 1≤Ai≤102(1≤i≤N) と小さいことに注目します.102以下の素数は25個であるため,Aiを素因数分解した結果には,高々25個の素数しか現れないことがわかります.
従って,それらを掛け合わせた値 wi≤k≤xi∏Ak と yi≤k≤zi∏Ak も当然高々25個の素数のみを使った掛け算で表せます.
2つの自然数のGCDは,それぞれに含まれる素因数について,指数の最小値乗を掛け合わせたものであるため,それら25個の素数が wi≤k≤xi∏Ak と yi≤k≤zi∏Ak にそれぞれ何回掛けられているかが分かれば最大公約数を求めることができます.
これは,数列Aについて,25個の素数それぞれの指数における累積和を持って置くことで高速に計算することが可能です.
実装にもよりますが,高速な素因数分解法を用いることで計算量はO((Q+N)×log(A))となります.
コード例(Python)