http://icpc.upc.edu.cn/problem.php?cid=1592&pid=2
#include<bits/stdc++.h>
using namespace std;
long long i,n,a,k,k1,k2,c[10000],b[10000],aa,j,max1,ans,ans1;
bool f(long long x)
{
for (int j=2; j<=(int)sqrt(x); j++)
if (x%j==0) return 0;
return 1;
}
int main()
{
for (i=2;i<=100000;i++)
if (f(i)) b[k++]=i;
cin>>n;
for (i=1; i<=n; i++)
{
cin>>a;
aa=a;
k2=0;
k1=0;
if (a==1){
printf("0\n");
continue;
}
while (k1<k&&a>1&&b[k1]<=a){
if (a%b[k1]==0){
k2=max(k2,b[k1]);
while (a%b[k1]==0)
a=a/b[k1];
}
k1++;
}
k2=max(a,k2);
printf("%d\n",aa/k2);
}
}