#include <bits/stdc++.h>
using namespace std;
inline bool isvowel(char c) {
  c = tolower(c);
  if (c == 'a' || c == 'e' || c == 'i' || c == 'y' || c == 'o' || c == 'u')
    return 1;
  return 0;
}
const double eps = 0.000001;
const long double pi = acos(-1);
const int maxn = 1e7 + 9;
const int mod = 1e9 + 7;
const long long MOD = 1e18 + 9;
const long long INF = 1e18 + 123;
const int inf = 2e9 + 11;
const int mxn = 1e6 + 9;
const int N = 2e5 + 1;
const int M = 22;
const int pri = 997;
const int Magic = 501;
const int dx[] = {-1, 0, 1, 0};
const int dy[] = {0, -1, 0, 1};
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 get(int l, int r) { return get(r) - get(l - 1); }
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; 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));
  }
  for (long long i = 1; i <= n; i++) {
    for (auto x : c[i]) {
      if (was[x] > 0) {
        upd(was[x], 1);
      } else {
        was[x] = i;
      }
    }
    for (auto it : q[i]) {
      ans[it.second] = get(it.first, i);
    }
  }
  for (long long i = 1; i <= m; i++) {
    cout << ans[i] << '\n';
  }
  return 0;
}
