Skip to content

DjSapsan/PrimesGenerator

Repository files navigation

PrimeCompression

Тут я буду пытаться сжимать файлы до 1% от исходного размера. Успехов мне!

На данный момент суть алгортима примерно такова:

  1. Берем бинарник (полученный с любого типа - картинки, видео, текст, рандом).
  2. Факторизуем недлинные числа, либо разделяем длинные на короткие и снова п.2. (надеюсь на квантовые алгоритмы факторизации для сверхбольших чисел)
  3. Берем полученные праймы и заменяем на их порядковые номера (для сокращения размера).
  4. Структура готового результата примерно такова (может менятся). Начальной байт - смещение от первого простого. Получаем смещение 0-255, то есть от 2 до 1619. (11111111 = 11001010011[-3 bits]) Дальше каждый повтор кодируется двумя байтами: Первый байт - смещение от предыдущего. Для первого повторения получаем смещение 0-255, то есть от 1619 до 3643. (11111111 = 111000111011[-3]) Второй байт - повторение первого байта. Число повторений 0-255, то есть от 1 до 256. Получаем от 3643 до 5.41 × 10^911
541436884361247869760383760157759154257265498488246364852140681264276377772864284093301300140099044458956336242435116109577198848648435748518009086204151718425107127750507835519523938834535009167970151583733550988115597013968644202765168501443100006950931076709829094548865930969463129076423792350990351628277925710497466605384425043394714492729572580781599587278990759807651594747079587189316423117949647844734895032809338191739234534901523371664759214883305388773653039359288890329875523581615338552007342169460472971615172022956552473915834348998109746521060302879596919433506201316999917775512819719538658416366270586752623795517366330509761061548067620435221552459719935600265212261176090795515218787098445789028766614416582541552479238405065897270431059841882183832204952632315526661366863098760605579871538201057490717934518941988362515668601442924099812849976488309976920869711109533585862942181606374401

Проверка НАИЛУЧШЕГО СЛУЧАЯ

Файл [255 255 255] = [0xFF 0xFF, 0xFF] = [11111111 11111111 11111111] - 24 бита Разжимаем:

  1. 255-ое простое число. Это 1619.
  2. 255-ое смещение от предыдущего. Это 3643.
  3. 255+1 повторение числа 3643. Получаем вышеуказанное или в бинаре 3029 бит.
11010001110111000101000100100001110000101011110110110011110110110001000011100110111101011000111110110001001011110110000010011010000101110010101110111010011101011111001100111011000011001101010001001011010001100011001011111111000000110010011101101100110001111001010111010010011111110101011100101100110110011001111101111110111101010010110000110111110010000010000101110100100001100101011010011100011111100011111010010000101011100101000100111100011010011101011100101110001011010111110101000001100110100110100101011011100001110011010010101100001111101111110111111011000010110001011011011010111001000010100011110001100111111011100010001011001000000011111001011100111000110001001011010001110001000100100000111011000001001100101111100110011100010111101000000101100000101010111011101001101000110001101011110010101100100000111100100000101111000100011100111101110010111001010101010011000100001011110101010001111110100011011010111101011110001000001101011100011101111110010111111010010111111110110001001011001000011111111001100001111101100011101110010101000100010110111000010001001000100010000111001010100110100100110100111101000011000010000110001111101000010111000011100110001101011111000110011001000001011100111000000000101000001101011000001000001000000101110101010011110100000000011011101111001010101110100110110101100000011000011000111101110110111100001010010101010001111101001110010101010000100110110111000100110110000111111010001100010011110101011110110111000100001001110110100010100001101110000101100100010010100101011001001011111000010111110101001111010011010100001000111110000000000011011000001011110001101000001100011101100010101000010001011101010001011000111101101001101111011001011101011010000100100010000010000110000100101101101000110011011110110011001100111000100010010000000000011000010111011110100001100000000110010000001111001000110100111000111001101100111110100011100001100010110000001010101000000111101100001110111101100101010100101100011110001011101100101000100110001101011001100000110101010111101010111100010100001001110111000010111000100010101010110001110100111001100000111001111011101110110100101011000111110011011010101110011000010111101100111100010010001010111110000001000111101010111011100110011001101010001100000010110001110101000101011100111100111001101000111100101010000100010110001100011111100110111111011001101100010101110000110000110101111101010101011001010010100101000100100000010111001111001011110010010100101101100000011111111010001010001110001110011100100010101001010110111101011010011110000011110010011000010111011011100111110101001100111101101110001010001000111101110110010101000101011100000111001010010101111010000100111110011011010100100110100010110110001100001001011001001101100001000000100000001100011001000001000011001111100110011011111011111110111110010001111001011101110110110001110000000010011001001010111001001111101111010100000100100101110100011001001000111100111001001110100100010011001111110111110111100101000101100101101000101010101111001111011101111101100101010111111111111010011110000000001

Считаем компрессию: 3029/24 = 126 РАЗ!!!!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published