#include<bits/stdc++.h>
using namespace std;

#define REP(i,a,b) for(i=a;i<b;i++)
#define rep(i,n) REP(i,0,n)

#define ll long long
#define ull unsigned ll

template<class S, class T> inline void chmin(S &a, T b){if(a>b)a=b;}
template<class S, class T> inline void chmax(S &a, T b){if(a<b)a=b;}

#define M 100001

int N, A[100000], K;

vector<int> arr[100001];
int now[100001];
int nx[100001];

int nxbg[100001];
int dv[3000], dvs;

int main(){
  int i, j, k, t;
  ll res;

  scanf("%d%d",&N,&K);
  rep(i,N) scanf("%d",A+i);

  rep(i,N) arr[A[i]].push_back(i);

  for(i=N-1;i>=0;i--){
    nxbg[i] = i + 1;
    while(nxbg[i] != N && A[nxbg[i]] <= A[i]) nxbg[i] = nxbg[nxbg[i]];
  }

  rep(i,N){
    t = A[i] - K;
    nx[i] = N;
    now[A[i]]++;
    if(t == 0){
      nx[i] = nxbg[i];
    } else if(t > 0){
      dvs = 0;
      for(j=1;j*j<=t;j++) if(t%j==0){
        dv[dvs++] = j;
        if(j*j!=t) dv[dvs++] = t/j;
      }
      rep(j,dvs){
        if(A[i] % dv[j] != K) continue;
        if(now[dv[j]]<arr[dv[j]].size()) chmin(nx[i], arr[dv[j]][now[dv[j]]]);
      }
    }
  }

  res = (ll)N*(N+1) / 2;

  k = N;
  for(i=N-1;i>=0;i--){
    k = min(k, nx[i]);
    res -= N - k;
  }

  printf("%lld\n",res);

  return 0;
}