对每一个小于 sqrt(y)的数,求对数后找一个最接近的即可。。
两题都是出自mitbbs那个pdf文档。
我觉得这样实现貌似对的,虽然没有考虑很大数字问题。
找到根号。
然后递减看看能否整除。不知道是否时间代价会很大。
是否应该只找到是质数的数字除?可那样考虑会很复杂吧。
bool isSuperCool(int y)
{
if (y<=1)
{
return false;
}
int sqrt_y=sqrt((double)y);
for (int k=sqrt_y;k>1;k--)
{
int t=y;
while(t>1)
{
if (t%k==0)
{
t/=k;
}
else
{
break;
}
}
if (t==1)
{
return true;
}
}
return false;
}