Гость
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Алгоритм (тест простоты) для определения очень больших простых чисел / 25 сообщений из 76, страница 1 из 4
22.09.2019, 07:56
    #39865151
Gennadiy Usov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Алгоритм (тест простоты) для определения очень больших простых чисел
Ещё раз взглянул на сообщение 21976045 и подумал,
а почему бы не создать отдельный топик по решению сверх-задачи, которую поставил mayton.

Попробую эту сверх-задачу ещё раз сформулировать:
maytonДавайте поставлю сверх-задачу.

Пускай задана максимально-известная prime-константа Мерсенна (Хи-мерсенна).


На каком расстоянии от Хи-Мерсенна находится следующее простое число?
Ясно, что на своих ПК мы не сможем (пока) «искать простоту» вблизи таких больших чисел.

Остаётся отрабатывать наши действия на меньших числах,
и, если получится, распространить эти действия на большие числа
(это ещё называется построением эвристического алгоритма).
...
Рейтинг: 0 / 0
22.09.2019, 15:46
    #39865228
Gennadiy Usov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Алгоритм (тест простоты) для определения очень больших простых чисел
Можно искать следующее простое число за , двумя способами:
- искать следующее простое число Мерсенна;
- искать следующее простое число, следующее за этим число Мерсенна.
Если для первого варианта есть тест Люка-Лемера, то для второго варианта теста простоты пока нет

Конечно, тесты простоты есть. Но с учётом того, что по этим тестам простоты нужно провести очень большое количество раундов, связанных с возведением в большую степень (в тесте Люка-Лемера только возведение в квадрат), то времени на поиск очередного простого числа потребуется во много раз больше, чем для теста Люка-Лемера.

Остаётся найти другой тест для поиска простых чисел в окрестности чисел Мерсенна, по скорости сравнимого с тестом Люка-Лемера.
...
Рейтинг: 0 / 0
22.09.2019, 17:12
    #39865244
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Алгоритм (тест простоты) для определения очень больших простых чисел
Нам следует оставить бесполезные Попытки просто искать числа. В районе сверхбольших. Вычислительная сложность такова что наших машин не хватит.

Давай откатывать гипотезы на малых числах которые хотя бы быстро вычислимы.
...
Рейтинг: 0 / 0
22.09.2019, 17:44
    #39865257
Gennadiy Usov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Алгоритм (тест простоты) для определения очень больших простых чисел
maytonНам следует оставить бесполезные Попытки просто искать числа. В районе сверхбольших.
Вычислительная сложность такова что наших машин не хватит.
Давай откатывать гипотезы на малых числах которые хотя бы быстро вычислимы.Конечно, сначала проверка гипотез будет на малых числах,
и если гипотеза работает,
то, согласно эвристике, можно гипотезу в виде алгоритма распространить на большие числа.
...
Рейтинг: 0 / 0
23.09.2019, 10:33
    #39865451
Gennadiy Usov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Алгоритм (тест простоты) для определения очень больших простых чисел
Немного о тесте Люка-Лемера.
Как известно, числа Мерсенна получили известность благодаря тесту простоты Люка-Лемера.
Однако тест Люка-Лемера может проверять только числа из последовательности Мерсенна.
Другие большие числа этот тест не рассматривает.
Все остальные известные тесты простоты не могут в разумное время определить простоту больших чисел,
поскольку такие тесты включают в себя объём вычислений, намного больший, чем объём вычислений теста Люка-Лемера.

При определении простоты числа тест простоты Люка-Лемера формирует
последовательность чисел из (n – 2) остатков по модулю квадратов чисел, меньших n.
После того, как последовательность сформирована, оценивается последний элемент последовательности.
Если последний элемент равен числу 0, тогда число Mn простое.
Если последний элемент не равен числу 0, тогда число Mn составное.
В тесте Люка-Лемера не применяется формула Ферма, в отличие от большинства тестов простоты.
Это является преимуществом теста по быстроте.

Поэтому, если разрабатывать новый алгоритм,
то его быстродействие должно сравниться с быстродействием теста Люка-Лемера.
...
Рейтинг: 0 / 0
24.09.2019, 13:33
    #39866290
Gennadiy Usov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Алгоритм (тест простоты) для определения очень больших простых чисел
В эвристическом алгоритме для числа n одним из основных элементов является число d.

Появляется соблазн "сформировать" очень большие числа следующим образом.
Выбирается очень большое число 2^m, и уже для этого числа «подбирается» число d. Таким образом, получается число
2^m * d + 1

Такие числа уже рассматривались.
Они называются числами Прота.
https://ru.wikipedia.org/wiki/Число_Прота
Для проверки таких чисел на простоту существует теорема Прота
https://ru.wikipedia.org/wiki/Теорема_Прота
Данная теорема Прота является вероятностным тестом простоты.

Самым большим известным простым числом Прота является число 10223*2^31172165 + 1 ,
которое является крупнейшим известным простым числом, не являющимся числом Мерсенна.

Были проверены числа Прота на небольших числах m.
Можно для каждого значения m определить минимальное значение d.
...
Рейтинг: 0 / 0
26.09.2019, 16:20
    #39867421
Gennadiy Usov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Алгоритм (тест простоты) для определения очень больших простых чисел
Появилась ещё одна статья.
http://sci-article.ru/stat.php?i=1569407195

Если коротко, то
получен эвристический алгоритм для определения простых чисел Мерсенна Mn .

Составлена на Python программа с применением эвристического алгоритма по определению простых чисел Мерсенна.

Время работы такой программы сопоставимо со временем работы программы теста Люка-Лемера.

Получается, что
время определения (n – 2) квадратов чисел, меньших Mn, в виде остатков по модулю Mn
почти равно времени определения остатка по модулю Mn для числа
a^((Mn – 1)/2)
В статье рассмотрено число a = 3. Показаны возможности других оснований степени.

В отличие от теста Люка-Лемера
данный эвристический алгоритм определяет простые числа Mnk = 2^n - 1 + 4*k, где k - натуральное число.

Программа на Python подтвердила эти расчёты для n < 60 и для шагов 1 <= k <= 25.
...
Рейтинг: 0 / 0
26.09.2019, 18:39
    #39867495
Aklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Алгоритм (тест простоты) для определения очень больших простых чисел
Gennadiy Usov,

продолжайте наблюдения.
...
Рейтинг: 0 / 0
27.09.2019, 15:04
    #39867911
Gennadiy Usov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Алгоритм (тест простоты) для определения очень больших простых чисел
AklinGennadiy Usov,
продолжайте наблюдения.Дальнейшие наблюдения уже почти не нужны.

1. Получен эвристический алгоритм определения всех простых чисел (проверено на диапазоне от 5 до 250 000 000) (новизна).

2. Получена последовательность простых чисел, состоящая из 50% всех простых чисел. При этом для каждого проверяемого числа достаточно 3-х раундов вычислений (новизна).

3. Получен эвристический алгоритм определения простых чисел Мерсенна, сопоставимый по времени работы с тестом Люка-Лемера.

4. Данный эвристический алгоритм можно применять для определения простых чисел в окрестности чисел Мерсенна (новизна).
...
Рейтинг: 0 / 0
06.10.2019, 22:39
    #39872343
fkthat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Алгоритм (тест простоты) для определения очень больших простых чисел
Gennadiy Usovпроверено на диапазоне от 5 до 250 000 000

250 лямов это даже до 32 бит не дотягивает. Ты вот сгенери простое число битов так хотя бы на 256.
...
Рейтинг: 0 / 0
06.10.2019, 22:57
    #39872355
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Алгоритм (тест простоты) для определения очень больших простых чисел
Мы уже генерили до 2048 + хвостик. С использованием OpenJDK и господин математик
с помощью магии Питона и своих эвристик.
...
Рейтинг: 0 / 0
07.10.2019, 00:07
    #39872364
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Алгоритм (тест простоты) для определения очень больших простых чисел
Range Primes Found(Usoff) Primes Found(JDK::BigInteger) Primes (theoretical) Elapsed time(s) Average Speed (primes/sec)2 - 10024002^200 + 1 - 2^200 + 1 + 1 000 0007134611892^500 + 1 - 2^500 + 1 + 200 00057622882^1024 + 1 - 2^1024 + 1 + 200 0002818352^2048 + 1 - 2^2048 + 1 + 100 000782722^4096 + 1 - 2^4096 + 1 + 50 00022950

Первые 22 штуки в диапазоне 4096 бит.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
2^4096 + 1 + 1760
2^4096 + 1 + 7226
2^4096 + 1 + 7422
2^4096 + 1 + 10092
2^4096 + 1 + 10472
2^4096 + 1 + 13964
2^4096 + 1 + 17334
2^4096 + 1 + 17354
2^4096 + 1 + 19890
2^4096 + 1 + 22802
2^4096 + 1 + 27014
2^4096 + 1 + 28346
2^4096 + 1 + 28652
2^4096 + 1 + 29634
2^4096 + 1 + 34512
2^4096 + 1 + 34956
2^4096 + 1 + 35294
2^4096 + 1 + 40160
2^4096 + 1 + 41280
2^4096 + 1 + 42590
2^4096 + 1 + 43344
2^4096 + 1 + 49562
...
Рейтинг: 0 / 0
07.10.2019, 06:28
    #39872383
Gennadiy Usov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Алгоритм (тест простоты) для определения очень больших простых чисел
maytonRange Primes Found(Usoff) Primes Found(JDK::BigInteger) Primes (theoretical) Elapsed time(s) Average Speed (primes/sec)2 - 10024002^200 + 1 - 2^200 + 1 + 1 000 0007134611892^500 + 1 - 2^500 + 1 + 200 00057622882^1024 + 1 - 2^1024 + 1 + 200 0002818352^2048 + 1 - 2^2048 + 1 + 100 000782722^4096 + 1 - 2^4096 + 1 + 50 00022950И что даёт таблица?
...
Рейтинг: 0 / 0
07.10.2019, 07:43
    #39872390
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Алгоритм (тест простоты) для определения очень больших простых чисел
Gennadiy Usov,

Это ответ господину fkthat.
...
Рейтинг: 0 / 0
07.10.2019, 12:44
    #39872499
Gennadiy Usov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Алгоритм (тест простоты) для определения очень больших простых чисел
Не стал много считать на своём стареньком ПК, поэтому только один час:

2019-10-07-09.53.54
-простое- 1760 -s- 5
-простое- 7226 -s- 1
-простое- 7422 -s- 1
-простое- 10092 -s- 2
-простое- 10472 -s- 3
-проверка чисел от - 2^4096 + 1 -дистанция - 11000
-количество простых чисел- 5
-количество раундов - 5687
-минимальное количество раундов для числа - 1
-количество минимальных раундов - 5495
-максимальное количество раундов для числа - 38
-количество максимальных раундов - 190
-остаток- 2
2019-10-07-10.54.48

Программа практически сразу определяет составное число.
...
Рейтинг: 0 / 0
07.10.2019, 12:55
    #39872512
Gennadiy Usov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Алгоритм (тест простоты) для определения очень больших простых чисел
fkthatGennadiy Usovпроверено на диапазоне от 5 до 250 000 000250 лямов это даже до 32 бит не дотягивает. Ты вот сгенери простое число битов так хотя бы на 256. А зачем так мало? 256?

Уж лучше 500, 1500, 2500,...

В работе
http://sci-article.ru/stat.php?i=1569407195

показаны последовательности простых чисел, в которых есть следующие простые числа:

2^2370 - 1 + 4
2^2648 - 1 + 8
2^1661 - 1 + 12
2^2772 - 1 + 16
2^2810 - 1 + 20
...
Рейтинг: 0 / 0
11.10.2019, 12:56
    #39875145
Gennadiy Usov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Алгоритм (тест простоты) для определения очень больших простых чисел
Тут появилась одна задачка:

Пусть имеется выражение:

a mod(b)

Если в данном случае b = c + d,

то как можно представить первоначальное выражение через mod(b) и mod(c),
или через их комбинацию?
...
Рейтинг: 0 / 0
11.10.2019, 12:57
    #39875147
Gennadiy Usov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Алгоритм (тест простоты) для определения очень больших простых чисел
Исправляю предыдущее сообщение:

то как можно представить первоначальное выражение через mod(d) и mod(c),
или через их комбинацию?
...
Рейтинг: 0 / 0
11.10.2019, 13:42
    #39875185
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Алгоритм (тест простоты) для определения очень больших простых чисел
Если b = c + d, то мы можем взять модуль с обоих сторон

b (mod x) = c + d (mod x)
...
Рейтинг: 0 / 0
11.10.2019, 13:43
    #39875186
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Алгоритм (тест простоты) для определения очень больших простых чисел
Или ты имел в виду дистрибутивность операции mod?
...
Рейтинг: 0 / 0
11.10.2019, 14:47
    #39875242
Gennadiy Usov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Алгоритм (тест простоты) для определения очень больших простых чисел
maytonИли ты имел в виду дистрибутивность операции mod?Да.

Может быть можно получить функцию вида

x mod(c) +- y mod(d) +- (что-то),

или другие опперации?
...
Рейтинг: 0 / 0
11.10.2019, 15:20
    #39875278
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Алгоритм (тест простоты) для определения очень больших простых чисел
Для умножения что-то подобное было. Или для возведения в степень. Я думаю если Барлон заскочет
в топик - то он прояснит. Вроде скилованный парень в этих кольцах и модулях.
...
Рейтинг: 0 / 0
11.10.2019, 16:40
    #39875358
Barlone
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Алгоритм (тест простоты) для определения очень больших простых чисел
maytonДля умножения что-то подобное было. Или для возведения в степень. Я думаю если Барлон заскочет
в топик - то он прояснит. Вроде скилованный парень в этих кольцах и модулях.Для умножения. Китайская теорема об остатках.
...
Рейтинг: 0 / 0
11.10.2019, 16:54
    #39875373
Gennadiy Usov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Алгоритм (тест простоты) для определения очень больших простых чисел
BarlonemaytonДля умножения что-то подобное было. Или для возведения в степень. Я думаю если Барлон заскочет
в топик - то он прояснит. Вроде скилованный парень в этих кольцах и модулях.Для умножения. Китайская теорема об остатках.Получается, что есть формулы только для умножения, а для сложения формул нет.
...
Рейтинг: 0 / 0
11.10.2019, 16:56
    #39875376
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Алгоритм (тест простоты) для определения очень больших простых чисел
Можно нарисовать табличку Пифагора для сложения. Я думаю что закономерность будет.
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Алгоритм (тест простоты) для определения очень больших простых чисел / 25 сообщений из 76, страница 1 из 4
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]