如何检查整数是否为某个根?

时间:2018-03-21 08:00:02

标签: c primes

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)。

0 个答案:

没有答案