Там похоже действительно потеряна 1/2, хоть это и не сцщественно.
Насколько я понимаю, по задумке метод рассчитан на m, заведомо имеющие большое количество различных делителей (по крайней мере для них получается хороший выигрыш). Тогда разумно наложить такое же требование на k, чтобы минимизировать c_0.
Одна двойка попадает в c_1, то есть 1100101 и 39979 * 2.
На самом деле не совсем корректно рассматривать сжатие, не фиксировав (нетривиальное) вероятностное пространство над сообщениями, ведь без этого мы никак не сможем сравнивать алгоритмы сжатия. Конечно можно сказать, что все сообщения заданной длины равновероятны, но тогда мы принципиально не сможем ничего сжать.
Все-таки скорее просто в длину, а не в ее двоичный логарифм.