|
Факторизация чисел - ещё один метод (про единицы)
|
|||
---|---|---|---|
#18+
Решил анализировать формулу Ферма 2^(n – 1) (mod n) на все значения показателя степени от 0 до (n – 1). Оказалось, что из этой информации можно получить сомножители числа n. Результаты предварительного анализа представлены в статье http://sci-article.ru/stat.php?i=1582386219 Пока упор в статье делается на произведение двух простых сомножителей. Всё дело в порядковом номере единиц, которые получаются при вычислении по формуле Ферма . Дальнейшая задача – определение порядкового номера этих единиц для конкретного числа n. Однако, пока определение порядкового номера единиц – трудоёмкая задача. mayton Усов. Бросай свои числа. Go-go решать задачи. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2020, 14:08 |
|
Факторизация чисел - ещё один метод (про единицы)
|
|||
---|---|---|---|
#18+
Нет. Я пока не go-go. Тема - весьма специфичная. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2020, 18:20 |
|
Факторизация чисел - ещё один метод (про единицы)
|
|||
---|---|---|---|
#18+
Gennadiy Usov, совсем неинтересно. Очевидно, что если число - псевдопростое по Ферма по некоторому основанию, а Миллер-Рабин по этому же основанию говорит, что число составное - то это автоматически дает нам факторизацию. Только трудоемкость подбора какого такого основания превышает перебор делителей. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2020, 07:46 |
|
Факторизация чисел - ещё один метод (про единицы)
|
|||
---|---|---|---|
#18+
Или тут имелся ввиду p-1 - метод Полларда ? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2020, 07:59 |
|
Факторизация чисел - ещё один метод (про единицы)
|
|||
---|---|---|---|
#18+
Разных алгоритмов напридумывать можно. Будут ли они эффективными - вот вопрос. Например, такой вариант: допустим, мы предполагаем что известное нам составное N - произведение ровно двух простых неизвестных сомножителей p и q (пытаемся факторизовать rsa-модуль). Тогда pq = N = ((p+q)/2) 2 - ((p-q)/2) 2 и это дает нам ограничения на возможные остатки (p+q)/2 по простым модулям: ((p+q)/2) 2 - N должно быть квадратичным вычетом. С другой стороны, для произвольного a должно выполняться a (p-1)(q-1)/2 ≡ 1 mod N Преобразуем это равенство: a (pq+1)/2 ≡ a (p+q)/2 mod N Левую часть мы знаем. И нам нужно найти дискретный логарифм в правой части. Тут можно использовать вариацию на тему метода больших и малых шагов . Большой шаг будет произведением некоторого набора маленьких простых чисел, а на возможные значения малых шагов у нас уже есть ограничение: ((p+q)/2) 2 - N должно быть квадратичным вычетом по модулю каждого из этих маленьких простых. Такой алгоритм должен неплохо работать до значений N порядка 2 128 . ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2020, 08:58 |
|
Факторизация чисел - ещё один метод (про единицы)
|
|||
---|---|---|---|
#18+
Barlone Или тут имелся ввиду p-1 - метод Полларда ? Метод определения единиц хорошо "отсекает" большие делители, близкие к "корню". ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2020, 09:14 |
|
Факторизация чисел - ещё один метод (про единицы)
|
|||
---|---|---|---|
#18+
Или вариация на тему квадратичных форм Шенкса - цепочка редукций фактически дает нам набор равенств: b 1 2 - a 0 a 1 = N b 2 2 - a 1 a 2 = N b 3 2 - a 2 a 3 = N ..... b n 2 - a n-1 a n = N При этом a 0 = 1, а из первого цикла мы выходим, когда a n оказывается квадратом. И зачем нам нужен второй цикл, если в этот момент (b 1 *b 2 *...*b n ) 2 ≡ a 0 *(a 1 *a 2 *...*a n-1 ) 2 *a n mod N Если a 0 и a n квадраты, имеем классическое равенство для факторизации x 2 ≡ y 2 mod N Ну и соответственно начинать можно не только с a 0 = 1, но и например с любого квадрата простого числа, найдя b 1 как квадратный корень из N по модулю квадрата этого простого (тут есть алгоритм Тонелли — Шенкса ). ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2020, 09:27 |
|
Факторизация чисел - ещё один метод (про единицы)
|
|||
---|---|---|---|
#18+
Barlone Разных алгоритмов напридумывать можно. Будут ли они эффективными - вот вопрос. Например, такой вариант: допустим, мы предполагаем что известное нам составное N - произведение ровно двух простых неизвестных сомножителей p и q (пытаемся факторизовать rsa-модуль). Тогда pq = N = ((p+q)/2) 2 - ((p-q)/2) 2 и это дает нам ограничения на возможные остатки (p+q)/2 по простым модулям: ((p+q)/2) 2 - N должно быть квадратичным вычетом. С другой стороны, для произвольного a должно выполняться a (p-1)(q-1)/2 = 1 mod N Преобразуем это равенство: a (pq+1)/2 ≡ a (p+q)/2 mod N Левую часть мы знаем. И нам нужно найти дискретный логарифм в правой части. Тут можно использовать вариацию на тему метода больших и малых шагов . Большой шаг будет произведением некоторого набора маленьких простых чисел, а на возможные значения малых шагов у нас уже есть ограничение: ((p+q)/2) 2 - N должно быть квадратичным вычетом по модулю каждого из этих маленьких простых. Такой алгоритм должен неплохо работать до значений N порядка 2 128 . Да, у меня получается дискретное логарифмирование для h=1. Только имеются не одна, а несколько групп (параметр n). ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2020, 13:08 |
|
Факторизация чисел - ещё один метод (про единицы)
|
|||
---|---|---|---|
#18+
Barlone для произвольного a должно выполняться a (p-1)(q-1)/2 = 1 mod N Преобразуем это равенство: a (pq+1)/2 = a (p+q)/2 mod N Левую часть мы знаем. И нам нужно найти дискретный логарифм в правой части. Есть одна тонкость: допустим найдено решение по единице, однако таких решений несколько (несколько единиц). Нужно - ближайшее к "корню". Если решение не подходит, так как число В = p-q не целое число (а именно так проверяется единица), то надо искать следующее решение. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2020, 19:44 |
|
Факторизация чисел - ещё один метод (про единицы)
|
|||
---|---|---|---|
#18+
Gennadiy Usov Barlone для произвольного a должно выполняться a (p-1)(q-1)/2 = 1 mod N Преобразуем это равенство: a (pq+1)/2 = a (p+q)/2 mod N Левую часть мы знаем. И нам нужно найти дискретный логарифм в правой части. a (pq+1)/2 - (p+q)/2 ≡ 1 mod N вот тут ваша единица теория ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2020, 06:11 |
|
Факторизация чисел - ещё один метод (про единицы)
|
|||
---|---|---|---|
#18+
Barlone вот тут ваша единица теория а в реальности 3: 2^3 = 1 (mod 7) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2020, 07:45 |
|
Факторизация чисел - ещё один метод (про единицы)
|
|||
---|---|---|---|
#18+
Gennadiy Usov Barlone вот тут ваша единица теория а в реальности 3: 2^3 = 1 (mod 7) Ну а 3^3 = 6 (mod 7) Надо "для всех целых, взаимно простых с модулем". ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2020, 09:32 |
|
Факторизация чисел - ещё один метод (про единицы)
|
|||
---|---|---|---|
#18+
Как у каждого метода в факторизации, для метода определения единиц существуют проблемные числа. Для этих чисел с помощью единиц нельзя определить сомножители. Например, число 625 (5*127)... ... |
|||
:
Нравится:
Не нравится:
|
|||
28.02.2020, 16:25 |
|
Факторизация чисел - ещё один метод (про единицы)
|
|||
---|---|---|---|
#18+
Gennadiy Usov, 127 вольт остались в далёком прошлом, сейчас всюду 220 вольт. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.02.2020, 17:11 |
|
Факторизация чисел - ещё один метод (про единицы)
|
|||
---|---|---|---|
#18+
Barlone Тут можно использовать вариацию на тему метода больших и малых шагов . Большой шаг будет произведением некоторого набора маленьких простых чисел, а на возможные значения малых шагов у нас уже есть ограничение: ((p+q)/2) 2 - N должно быть квадратичным вычетом по модулю каждого из этих маленьких простых. Такой алгоритм должен неплохо работать до значений N порядка 2 128 . Немного поправил статью: http://sci-article.ru/stat.php?i=1583822766 Добавил средний шаг ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2020, 20:33 |
|
Факторизация чисел - ещё один метод (про единицы)
|
|||
---|---|---|---|
#18+
Согласно МТФ: если число p - простое, то 2^(p-1) = 1 (mod p). Если рассматривать для показателя степени 2 все k (1< k< p), то получается некоторая повторяющаяся последовательность чисел. Например, для р = 35 таких чисел будет только 12. Спрашивается: а какая «судьба» остальных чисел в количестве (34-12) между 1 и 34? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2020, 16:14 |
|
Факторизация чисел - ещё один метод (про единицы)
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2020, 17:14 |
|
Факторизация чисел - ещё один метод (про единицы)
|
|||
---|---|---|---|
#18+
Есть некоторое отличие квадратичных вычетов от остатков по модулю для 2^. Например. для 35 если 2^, то есть 22, 23, которых нет в х**2 если х**2, то есть 15, 14, 21, 25, 30, которых нет в 2^ ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2020, 19:12 |
|
Факторизация чисел - ещё один метод (про единицы)
|
|||
---|---|---|---|
#18+
Решил сравнить операции c = c *2 и c = c << 1 Оказалось, что 2-я операция работает на 10 % дольше. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2020, 06:42 |
|
Факторизация чисел - ещё один метод (про единицы)
|
|||
---|---|---|---|
#18+
А если сравнивать операции c = c /2 и c = c >> 1 то казалось, что и здесь 2-я операция работает на 10 % дольше. Однако, 1-я операция будет не int, и чтобы перевести число в int необходимо потратить ещё в 3 раза больше времени, чем было потрачено на c = c /2 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2020, 07:06 |
|
Факторизация чисел - ещё один метод (про единицы)
|
|||
---|---|---|---|
#18+
Gennadiy Usov Решил сравнить операции c = c *2 и c = c << 1 Оказалось, что 2-я операция работает на 10 % дольше. c = c + c ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2020, 09:40 |
|
Факторизация чисел - ещё один метод (про единицы)
|
|||
---|---|---|---|
#18+
Процессор быстрее всего выполняет операцию битового сдвига, она технически проще, чем сложение или умножение, деление еще тяжелее. Почему сдвиг медленнее в конкретном ЯП - скорее всего связано с внутренним устройством это ЯП, т.е. с тем какие еще инструкции выполняет процессор кроме самого сдвига. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2020, 09:55 |
|
Факторизация чисел - ещё один метод (про единицы)
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov Gennadiy Usov Решил сравнить операции c = c *2 и c = c << 1 Оказалось, что 2-я операция работает на 10 % дольше. c = c *2 быстрее c = c + c на 20 %. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2020, 13:50 |
|
Факторизация чисел - ещё один метод (про единицы)
|
|||
---|---|---|---|
#18+
потести Код: javascript 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2020, 13:53 |
|
Факторизация чисел - ещё один метод (про единицы)
|
|||
---|---|---|---|
#18+
Мы еще несколько лет назад ковыряли перформанс для Питона и пришли к выводу что надо использовать библиотеку NumPy. https://numpy.org/doc/stable/user/quickstart.html ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2020, 14:13 |
|
|
start [/forum/topic.php?fid=16&msg=39978761&tid=1339767]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
172ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
others: | 240ms |
total: | 514ms |
0 / 0 |