Алгоритм должен быть:
- Просто
- Правильно для любого значения ulong.
Код: Выделить всё
private bool IsPowerOfTwo(ulong number)
{
if (number == 0)
return false;
for (ulong power = 1; power > 0; power = power number)
return false;
}
return false;
}
Код: Выделить всё
private bool IsPowerOfTwo_2(ulong number)
{
double log = Math.Log(number, 2);
double pow = Math.Pow(2, Math.Round(log));
return pow == number;
}
Есть ли лучший алгоритм?
Подробнее здесь: https://stackoverflow.com/questions/600 ... power-of-2
Мобильная версия