开始时,seq 数组已清零。请注意 seq 数组的第一个元素的下标是 0 而非 1。
void something (int jump) {
for (int i = 0; i < N; i += jump)
++seq[i];
}
#include <cstdio>
#include <cctype>
typedef unsigned long long ull;
inline int Getint()
{
register int x=0,c;
while(!isdigit(c=getchar()));
for(;isdigit(c);c=getchar())x=x*10+(c^48);
return x;
}
int n,k,q;
int c[1000005],a[1000005];
ull s[1000005];
int main()
{
n=Getint(),k=Getint();
for(int i=1;i<=k;++i)++c[Getint()];
for(register int i=1;i<=n;++i)if(c[i])
for(register int j=1;j<=n;j+=i)a[j]+=c[i];
for(register int i=1;i<=n;++i)s[i]=s[i-1]+a[i];
for(register int q=Getint(),l,r;q--;)
l=Getint(),r=Getint(),printf("%llu\n",s[r+1]-s[l]);
return 0;
}