int intpow(int b, int e)
{
int r;
if(e==0) return 1;
if(e==1) return b;
r = intpow(b, e/2);
return r*r*((e&1)?b:1);
}
int check_perfect_power(int n)
{
int p, i;
for(p=sizeof(int)*8;p>2;p--)
{
for(i=2;intpow(i,p) <= n;i++)
{
if(intpow(i,p)==n) return i;
}
}
return -1;
}
我想检查一个大于0的整数是否是方形,立方体等......
并返回最低根。
例如:
64 = 2^6 = 4^3 = 8^2
check_perfect_power(64)
应该返回2(从2 ^ 6)。