#include <iostream>#include <vector>#include <set>#include <algorithm>usingnamespacestd;longlonggcd(longlonga,longlongb){if(a<b)swap(a,b);while(b){swap(a,b);b%=a;}returna;}voidexpand_factors(longlongn,set<longlong>&out){if(out.find(n)==out.end()){out.insert(n);for(longlongi=2;i*i<=n;i++){if(n%i==0){expand_factors(i,out);expand_factors(n/i,out);}}}}intsolve(longlongK,vector<longlong>&A){// A_divs: set of gcd(An, K)set<longlong>A_divs;for(inti=0;i<A.size();i++){A_divs.insert(gcd(A[i],K));}// factors: all factors of Kset<longlong>factors;factors.insert(1);expand_factors(K,factors);// toremove: all factors of A-divsset<longlong>toremve;toremve.insert(1);for(set<longlong>::iteratorit=A_divs.begin();it!=A_divs.end();it++){expand_factors(*it,toremve);}returnfactors.size()-toremve.size();}intmain(){cin.tie(0);ios::sync_with_stdio(false);// read input dataintN;longlongK;cin>>N>>K;vector<longlong>A(N);for(inti=0;i<N;i++){cin>>A[i];}// solve and print answerintans=solve(K,A);cout<<ans<<endl;}