//// YENNHI ////
#include<bits/stdc++.h>
#define ll long long
#define endl "\n"
#define pb push_back
#define fi first
#define se second

using namespace std;

const int Maxn = 1e6;
const int MOD = 1e9 + 7;
const ll INF = 1e18;

int n,R, q, l, r, Min,x, Max;
int a[Maxn + 10];
int R_max[Maxn + 10];
multiset<int> s;

bool check(int val) {
    if(s.empty()) return true;
    Min = *s.begin();
    Max = *s.rbegin();
    if(val % Min != 0 && Min % val != 0) return false;
    if(Max % val != 0 && val % Max != 0) return false;
    for(auto it = s.begin(); it != s.end(); it = s.upper_bound(*it)){
        x = *it;
        if(val % x != 0 && x % val != 0){
            return false;
        }
    }
    return true;
}

void sub1() {
    R = 1;
    for (int L = 1; L <= n; L++) {
        while (R <= n && check(a[R])) {
            s.insert(a[R]);
            R++;
        }
        R_max[L] = R - 1;
        auto it = s.find(a[L]);
        if (it != s.end()) {
            s.erase(it);
        }
    }
    while (q--) {
        cin >> l >> r;
        if(r <= R_max[l]) cout << "YES" << endl;
        else cout << "NO" << endl;
    }
}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    freopen("terminal.IN", "r", stdin);
    freopen("terminal.OU", "w", stdout);
    cin >> n >> q;
    for (int i = 1; i <= n; i++) {
        cin >> a[i];
    }
    sub1();
    return 0;
}
