Объяснение логарифма целых чисел - PullRequest
0 голосов
/ 07 мая 2020

Я хотел бы, чтобы кто-нибудь из сообщества мог подробно объяснить половину ответа на проблему, которую я нашел в сети. Проблема выглядит следующим образом:

Для заданного целого числа N, положительного, вернуть истину, если его можно было нарисовать как сумму двух или более последовательных целых чисел (10 = 1 + 2 + 3 + 4), если нет, верните false.

И это ответ, который я нашел

const consecutiveIntegers = (num) => !Number.isInteger( Math.log2(num));

Я никогда не приходил к тому, что имели в виду Ln или Le раньше, поэтому после исследования я понимаю, что если число может быть разделен на Log2 (8 = 3, следовательно, 8 = 2 * 2 * 2) не может быть выражен как запрошенный (нет последовательных чисел). Но я не понимаю, почему «Число не является целым» (логическое). Не следует проверять обратное? Число действительно было целым? Пожалуйста, имейте в виду, что я пытаюсь понять ответ, а не пытаюсь его улучшить или сделать более интересным. Заранее благодарим за ваше время и терпение. Полный кредит за ответ ГИДЕО.

1 Ответ

1 голос
/ 07 мая 2020

Такой номер называется вежливым номером . Известно, что невежливые числа - это в точности степени 2.

Теперь число n является степенью 2 тогда и только тогда, когда log2(n) является целым числом, из-за log2(2^k) = k.

...