Write a function isPowerOfThree(n) that returns true if n is a power of 3 and false if it is not.
1, 3, 9, 27, 81, .... 1 counts: it is 3 to the power 0.n is an integer from -2000000000 to 2000000000. 0 and negative numbers are not powers of 3.6 and 45 divide by 3 with no remainder, but they are not powers of 3.Then write a second function isPowerOf(n, base): the same check for any base. The parameter base is an integer, 2 or more. isPowerOf(16, 2) is true because 16 = 2 * 2 * 2 * 2. The same rules apply: 1 counts for every base, 0 and negative numbers never count. isPowerOfThree can just call isPowerOf(n, 3).
Both functions must be fast: big numbers are tested too, and a loop that repeats up to n times can be too slow.
In the real interview these rules were not in the task. The candidate had to ask about 1, 0 and negative numbers before coding, did not ask, and thinks this is why the interview failed.
isPowerOfThree(27)Returns true
isPowerOfThree(45)Returns false
isPowerOf(16, 2)Returns true
Asked at Hulu · Source
isPowerOfThree(27)trueisPowerOfThree(45)falseisPowerOfThree(1)trueisPowerOfThree(0)falseHidden tests run on Submit.