打表了65535以内的质数,
bool f;
int x,x1,imin,imax,num;
int fj[10000];
int main()
{
memset(fj,0,sizeof(fj));
cin>>x;
x1=x;
imin=0;imax=0;
for(int i=1;i<=9592;i++)
{
while(x1%prime[i]==0)
{
if(imin==0)
imin=i;
fj[i]++;
x1/=prime[i];
}
if(x1==1)
{
imax=i;
break;
}
}
if(imin==imax)
{
cout<<x<<endl;
return 0;
}
f=false;
num=0;
if(x1!=1)
num++;
for(int i=imin;i<=imax;i++)
{
if(fj[i]!=0)
num++;
if(fj[i]>1)
f=true;
}
if(f==false)
{
if(num%2==0)
cout<<1<<endl;
else
cout<<prime[imin]<<endl;
}
else
{
cout<<1<<endl;
}
return 0;
}
现在已经使用sqrt(n)的方法解决,但是不太能理解第25点为什么WA