Проверить, является ли одно целое число степенью другого

Это вопрос интервью : «Даны 2 целых числа x и y, проверьте, является ли x целочисленной степенью y» (например, для x = 8 и y = 2 ответ равно «истина», а для x = 10 и y = 2 «ложь»).

Очевидное решение:

int n = y; while(n < x) n *= y; return n == x

Теперь я думаю о том, как его улучшить.

Конечно, я могу проверить некоторые особые случаи: например, и x , и y ] должны быть четными или нечетными числами, т.е. мы можем проверить младший бит x и y . Однако мне интересно, смогу ли я улучшить сам основной алгоритм.

29
задан Michael 13 December 2010 в 13:07
поделиться