#include <bits/stdc++.h>
using namespace std;
const int MaxN = 1e5;
int n, m;
int a[2 * MaxN + 5];
int pos[2 * MaxN + 5];
int c[2 * MaxN + 5];
int tot;
struct PP {
  int l, r;
  int p;
  int ans;
} ll[50 * MaxN + 5];
PP q[2 * MaxN + 5];
int cmpl(PP x, PP y) {
  if (x.l == y.l)
    return x.r < y.r;
  else
    return x.l < y.l;
}
int cmpp(PP x, PP y) { return x.p < y.p; }
int lowbit(int x) { return x & (-x); }
void add(int x, int w) {
  while (x <= n) {
    c[x] += w;
    x += lowbit(x);
  }
}
int getsum(int end) {
  int res = 0;
  while (end > 0) {
    res += c[end];
    end -= lowbit(end);
  }
  return res;
}
int main() {
  while (scanf("%d %d", &n, &m) != EOF) {
    tot = 0;
    for (int i = 1; i <= n; i++) {
      scanf("%d", &a[i]);
      pos[a[i]] = i;
    }
    for (int i = 1; i <= n; i++) {
      for (int j = 1; i * j <= n; j++) {
        ll[++tot].l = min(pos[i], pos[i * j]);
        ll[tot].r = max(pos[i], pos[i * j]);
        add(ll[tot].r, 1);
      }
    }
    sort(ll + 1, ll + tot + 1, cmpl);
    for (int i = 1; i <= m; i++) {
      scanf("%d %d", &q[i].l, &q[i].r);
      q[i].p = i;
    }
    sort(q + 1, q + m + 1, cmpl);
    int head = 1, now = 1;
    for (int i = 1; i <= m; i++) {
      while (head < q[i].l) head++;
      while (ll[now].l < head) {
        add(ll[now].r, -1);
        now++;
      }
      q[i].ans = getsum(q[i].r);
    }
    sort(q + 1, q + m + 1, cmpp);
    for (int i = 1; i <= m; i++) printf("%d\n", q[i].ans);
  }
  return 0;
}
