题目链接:3的幂
题目描述:给定一个整数,写一个函数来判断它是否是 3 的幂次方。
要求不用循环或递归,O(1)判断。
有各种奇奇怪怪的方法,打表int范围内的3的次幂比对,int范围内最大的3的次幂一定是n倍数,求log3(n)是否为整数,三进制判断是否只有首位为1等等。
我用了判断log3(n)是否为整数的方法。
C语言的log只有以10和e为底的,其他要用换底公式,如:
l o g 3 ( n ) = l o g x ( n
题目链接:3的幂
题目描述:给定一个整数,写一个函数来判断它是否是 3 的幂次方。
要求不用循环或递归,O(1)判断。
有各种奇奇怪怪的方法,打表int范围内的3的次幂比对,int范围内最大的3的次幂一定是n倍数,求log3(n)是否为整数,三进制判断是否只有首位为1等等。
我用了判断log3(n)是否为整数的方法。
C语言的log只有以10和e为底的,其他要用换底公式,如:
l o g 3 ( n ) = l o g x ( n