设 p1,p2,p3⋯ 为从小到大的素数集合, k1,k2,k3⋯ 为它们的指数, AP 数有: ∀i,ki>ki+1 所以根据这个性质枚举,还有就是找在指数一样多(计算公式为 ∏(ki+1) )的情况下,要求最小的!!!
long long z[20]={2,3,5,7,11,13,17,19,23,29,31,37},n,ans,p;
void getans(long long x,long long y,long long k,long long aa)
{
long long s=x;
if(y>10)
return;
if(aa>p&&x<=n)
{
ans=x;
p=aa;
}
if(aa==p&&x<ans)
ans=x;
fr(i,1,k)
{
s=s*z[y];
if(s>n)
break;
getans(s,y+1,i,aa*(i+1));
}
}
int main()
{
while(scanf("%lld",&n)!=EOF)
{
ans=0;
p=0;
getans(1,0,1000000,1);
printf("%lld\n",ans);
}
return 0;
}