#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
#pragma GCC target("sse,sse2,sse3,sse3,sse4,popcnt,abm,mmx")
using namespace std;
const int N = 2e5 + 1;
const int maxn = 1e7 + 13;
int n, m, k;
vector<int> c[N];
int g[N];
vector<pair<int, int> > q[N];
int ans[N];
int was[maxn];
int f[N];
void upd(int pos, int x) {
  for (int i = pos; i <= n; i |= (i + 1)) f[i] += x;
}
int get(int r) {
  int res = 0;
  while (r > 0) {
    res += f[r];
    r = (r & (r + 1)) - 1;
  }
  return res;
}
int main() {
  ios_base::sync_with_stdio(0), cin.tie(0);
  cin >> n >> m;
  for (long long i = 1; i <= n; ++i) {
    int x;
    cin >> x;
    g[x] = i;
  }
  int cur = 0;
  for (int i = 1; i <= n; i++) {
    for (int j = i + i; j <= n; j += i) {
      cur++;
      c[g[i]].push_back(cur);
      c[g[j]].push_back(cur);
    }
  }
  for (long long i = 1; i <= m; ++i) {
    int l, r;
    cin >> l >> r;
    q[r].push_back(make_pair(l, i));
  }
  int res = 0;
  for (long long i = 1; i <= n; ++i) {
    for (auto x : c[i]) {
      if (was[x] > 0) {
        upd(was[x], 1);
        ++res;
      } else {
        was[x] = i;
      }
    }
    for (auto it : q[i]) {
      ans[it.second] = res - get(it.first - 1) + i - it.first + 1;
    }
  }
  for (long long i = 1; i <= m; ++i) {
    cout << ans[i] << '\n';
  }
  return 0;
}
