Магия числ

Dec 11, 2020 11:37

Вот простенькая программка без единой операции деления или вычисления остатка, без условных операторов или выражений, и без единого явно упомянутого простого числа, которая печатает простые числа вплоть до 67. А в числах с плавающей точкой типа double значащих бит всего 53, включая скрытый.

#include #include double magic(double f ( Read more... )

puzzle

Leave a comment

Comments 4

serge_gris December 12 2020, 16:18:40 UTC
ну не углубляясь в теорию по простоте можно закодировать первую двадцатку простяшек (лучше с тройки) половинками последовательных промежутков между числами.
3+1*2=5
5+1*2=7
7+2*4=11 и т.д.
То есть последовательность 1,1,2,1,2,1,2,3,...
Эти полугэпы вначале не больше трёх и кодируются каждый двума битами, то есть на двадцать штук нужно сорок бит.
А выцарапывать это дело из кодового магического числа можно и без делений и модулей. Жалко, что потом всё усложняется.

Reply

spamsink December 12 2020, 17:00:01 UTC
Жалко, что потом всё усложняется

Отсутствие делений в моём примере я упомянул чисто из хвастовства; понятно, что в делении вещественных чисел для реализации кодирования нет ничего запретного, и с помощью непрерывной дроби можно кодировать любую последовательность чисел.

Вариант из поста кодирует простые более компактно, чем гэпы, уже на точности double; понятно, что рано или поздно он станет лучше, чем полугэпы.

Reply

serge_gris December 12 2020, 17:32:28 UTC
С этим я согласен. Мне просто показалось, что речь идёт только о первой двадцатке простых. И как закодировать её некоторой константой для простенькой формулы. А константа должна поместиться в сингл.
Ну да, я немножко не туда залез.

Reply


fatoff December 13 2020, 17:11:04 UTC
Это такая детерминистическая прикольная математика. А есть приложения для недетерминистической, как-то: в картинке с видеокамеры на экране с размером width * height кликнуть мышкой на изображение, на которое мы хотим направить камеру, чтобы она прямо смотрела на то место. Или совместить cross-hair в центре camera view с объектом. Расстояние от камеры до объекта не известно. Из подсказок текущий zoom камеры, или "увеличение" в объективе. В реальном приложении я занимаюсь подобной ерундой. Аппроксимирую.

Reply


Leave a comment

Up