Given an integer, write a function to determine if it is a power of three.
Follow up:
Could you do it without using any loop / recursion?
判断一个整数是否是3的次方数,要求不用循环和递归。
分析:
判断一个整数是否是3的次方数,可不断除以3,并判断每一次的余数是否是0,若每一步相除余数都是0,且最后结果为1,则这个数是3的次方数。但这里用到了循环,不合题意。需另想办法。
我们知道,若整数n是3的次方数,则它可表示为n=3k,指数k=log3n=log10n/log103是一个整数。因此,原题变为判断log10n/log103是否是整数。
代码如下:
bool isPowerOfThree(int n)
{
if (n <= 0)
return false;
double k = log10(n) / log10(3);
return (k - (int)k < 0.000000000001);
}
浙公网安备 33010602011771号