Вот простенькая программка без единой операции деления или вычисления остатка, без условных операторов или выражений, и без единого явно упомянутого простого числа, которая печатает простые числа вплоть до 67. А в числах с плавающей точкой типа double значащих бит всего 53, включая скрытый.
#include
#include double magic(double f
(
Read more... )
Comments 4
3+1*2=5
5+1*2=7
7+2*4=11 и т.д.
То есть последовательность 1,1,2,1,2,1,2,3,...
Эти полугэпы вначале не больше трёх и кодируются каждый двума битами, то есть на двадцать штук нужно сорок бит.
А выцарапывать это дело из кодового магического числа можно и без делений и модулей. Жалко, что потом всё усложняется.
Reply
Отсутствие делений в моём примере я упомянул чисто из хвастовства; понятно, что в делении вещественных чисел для реализации кодирования нет ничего запретного, и с помощью непрерывной дроби можно кодировать любую последовательность чисел.
Вариант из поста кодирует простые более компактно, чем гэпы, уже на точности double; понятно, что рано или поздно он станет лучше, чем полугэпы.
Reply
Ну да, я немножко не туда залез.
Reply
Reply
Leave a comment