Dip

Рейтинг
3
Регистрация
16.03.2006

Для байтов - последнее простое число 251

Вот например простое число 11111110000009

!Иван FXS:
- поясните, пожалуйста, выделенное. Это означает, что "основание" для mod ищем по нисходящей среди простых чисел начиная с самого большого, "умещающегося" в формат (unsigned long)?

А список этих простых чисел - как получать будем, не надорвемся?

И еще: Вы в своем постере дважды употребили обозначение n. Это - описка или в самом деле одно и то же число?

n-это размерность массива S.

Надорвётся только чел не знающий математики.

Задача поиска простого полиномиальна.

Могу привести первые несколько десятков тысяч простых чисел.

Вам что алгоритма ещё и код здесь писать ?

А зарплату платить будете ? :)

Сорри за эмоции перед теми к кому они не относятся.

Dip:
С байтами наверное правильнее будет , чтобы не терять на выравнивании слов .

Люблю я себя цитировать.... :)

Похоже что нет необходимости ряд простых чисел P брать с конца диапазона. Можно и с начала.

А вообще почитайте классиков про хеш-функции.

Более того , ряд P можно брать не подряд а по приципу
P берём, P[i+1] берём , а P[i+2]-пропускаем
Получается двоичный вектор V размерности n.
Всего возможно 2^n-1 таких векторов.
Этот принцип можно использовать для многих полезных вещей.
1) Криптография. По сути не зная V правильной хеш-функции не найти.
То есть V может быть ключём шифрования симметричного типа.

2) Хеш-функций получается (2^n-1) штук.
Этот факт можно попробовать использовать ещё для чего-нибудь.

Хотя не думаю что такой индекс будет компактней чем сочетание
традиционных прямого и обратного. Но попробовать интересно.

PS:Вообщето звание абитуриента для меня крайне несвойственно.
Давайте повышайте статус. ;0)

Dip:
1) Слово рассматриваете как последовательность целых (unsigned long). Можно и байтов.
2) Считаете его контрольную S сумму по mod P , где P - простое и i-е с конца в (unsigned long)
Повторяете циклически 0< i <=n до тех пор пока не достигнете нужной вероятности коллизий.
Массив S[0..n] - будет искомым индексом.

С байтами наверное правильнее будет , чтобы не терять на выравнивании слов .

1) Слово рассматриваете как последовательность целых (unsigned long). Можно и байтов.

2) Считаете его контрольную S сумму по mod P , где P - простое и i-е с конца в (unsigned long)
Повторяете циклически 0< i <=n до тех пор пока не достигнете нужной вероятности коллизий.
Массив S[0..n] - будет искомым индексом.

12
Всего: 16