答案就是分解质因数求质数指数最大的。1A, 呵呵。
#include <cstdio>
#define maxn 1000100
int T,n;
int prime[maxn];
void getprime(){
prime[0] = 0;
for(int i = 2; i < maxn ; i ++){
if(!prime[i]) prime[++prime[0]] = i;
for(int j = 1; j <= prime[0] && prime[j] <= maxn / i; j ++){
prime[prime[j] * i] = 1;
if(i % prime[j] == 0) break;
}
}
}
int get(int n){
int mmax = 0;
for(int i = 1; i <= prime[0] && n >= prime[i]; i ++){
if(n % prime[i] == 0){
int k = 0;
while(n % prime[i] == 0){
n /= prime[i];
k ++;
}
mmax = mmax > k ? mmax : k;
}
}
return mmax;
}
int main(){
getprime();
scanf("%d",&T);
while(T --){
scanf("%d",&n);
printf("%d\n", get(n));
}
return 0;
}