证明:p进制下,当且仅当,x每位之和为B的倍数时,x%B=0
设x=k0+k1p+k2p2+...+knpn
若(k0+k1+...+kn)%B=∑ni=0ki%B=0
又因为x=∑ni=0ki+∑ni=1((pi−1)∗ki)
所以当∑ni=1((pi−1)∗ki)%B=0时,x%B=0
而pi−1=(p−1)∗(pi−1+pi−2+...+1)−>(pi−1)%(p−1)=0
所以当B=p−1或p−1的因子时,有:当且仅当∑ni=0ki%B=0,x%B=0
#include<stdio.h>
#include<bits/stdc++.h>
#define ll long long
#define pii pair<int,int>
#define pll pair<ll,ll>
#define MEM(a,x) memset(a,x,sizeof(a))
#define lowbit(x) ((x)&-(x))
using namespace std;
const int N = 5000 + 5;
const double EPS = 1e-7;
int slove(int n){
int ans=0;
for(int i=1,ed=sqrt(n);i<=ed;++i){
if(n%i==0){
++ans;
int j=n/i;
if(i!=j){
++ans;
}
}
}
return ans;
}
int main()
{
//freopen("/home/lu/code/r.txt","r",stdin);
//freopen("/home/lu/code/w.txt","w",stdout);
int T;
scanf("%d",&T);
while(T--){
int p;
scanf("%d",&p);
printf("%d\n",slove(p-1));
}
return 0;
}