Здравствуйте, gmkraprike, Вы писали:
G>Мысль интересна. Но пока не все понимаю, а точнее не могу понять обоснование, почему это должно работать.
G>Вопросы:
G>1)Почему были выбраны именно простые числа?
G>2)За что отвечает выбор количества "частей". Понятно, что, если частей много, то максимальное простое число в ней будет меньше, чем в случае малого числа таких "частей". Зная ответ на этот вопрос, я могу, наверное, определить, что будет эффективнее (экономнее).
G>3)Какой мат.операцией лучше объединить эти четыре оценки в одну числовую характеристику — число. Чтобы добиться ее уникальности.
G>PS Кстати, в таком случае можно использовать информацию о частоте букв в языке. К примеру, бука "e" в англ. — maximum, "z" — minimum.
Не против, если я отвечу?

1. Потому что результатом умножения простых чисел никогда не будет другое простое число. В результате умножения получим уникальный набор простых множителей.
3,2. Например, логическим ИЛИ. Каждую группу в нужные 2 байта 64-битного числа. Вот, видимо, отсюда и 4 группы.
Лично от меня, продолжение идеи:
Присвоить уникальное простое число каждой букве, причём в зависимости от частоты её встречаемости.
То есть:
e — 2
t — 3
o — 5
...
z — 101
http://ru.wikipedia.org/wiki/%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%BF%D1%80%D0%BE%D1%81%D1%82%D1%8B%D1%85_%D1%87%D0%B8%D1%81%D0%B5%D0%BB
И запаковать это всё в 64 бита.
Тогда этого должно хватить на достаточно большие строки (навскидку, около 100 символов).