powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Алгоритм (тест простоты) для определения очень больших простых чисел
25 сообщений из 76, страница 2 из 4
Алгоритм (тест простоты) для определения очень больших простых чисел
    #39875649
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gennadiy UsovmaytonИли ты имел в виду дистрибутивность операции mod?Да. Может быть можно получить функцию вида
x mod(c) +- y mod(d) +- (что-то), или другие опперации? Вопрос странный. Формулу вида x mod(c) +- y mod(d) +- (что-то) получитьможно всегда.
Надо тщательнЕе расставлять скобки, а то догадки разбегаются как тараканы:
b (mod x) = c + (d (mod x))
b (mod x) = (c + d)(mod x)
b (mod x) = c(mod x) + d (mod x)
((c + d)(mod x))(mod x)
Здесь только один вариант верен для натуральных в общем случае.
А вообще, найти опровергающие примеры было в тягость, школьная арифметика, не царское это дело.
...
Рейтинг: 0 / 0
Алгоритм (тест простоты) для определения очень больших простых чисел
    #39875670
Gennadiy Usov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
exp98Gennadiy UsovДа. Может быть можно получить функцию вида
x mod(c) +- y mod(d) +- (что-то), или другие опперации? Вопрос странный. Формулу вида x mod(c) +- y mod(d) +- (что-то) получитьможно всегда.
Надо тщательнЕе расставлять скобки, а то догадки разбегаются как тараканы:
b (mod x) = c + (d (mod x))
b (mod x) = (c + d)(mod x)
b (mod x) = c(mod x) + d (mod x)
((c + d)(mod x))(mod x)
Здесь только один вариант верен для натуральных в общем случае.
А вообще, найти опровергающие примеры было в тягость, школьная арифметика, не царское это дело.Здесь надо было связать сообщение с предыдущим сообщением:

Если есть
a mod (x+y),
то можно ли это выражение разложить на
a1 (mod x) и a2 (mod y)?
...
Рейтинг: 0 / 0
Алгоритм (тест простоты) для определения очень больших простых чисел
    #39875709
Barlone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gennadiy Usov, нет конечно
Легко найти пару чисел, равных по модулям a и b, но при этом неравных по модулю a+b.
Или наоборот, пару чисел, равны по модулю a+b, но неравных по модулям a и b.
...
Рейтинг: 0 / 0
Алгоритм (тест простоты) для определения очень больших простых чисел
    #39875721
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Убежден что Геннадия ведет какая-то интуиция. И она ему подсказывает искать формулы
ускоренного сложения чисел по модулю. Очевидно что за этим стоит некая оптимизационная
цель.
...
Рейтинг: 0 / 0
Алгоритм (тест простоты) для определения очень больших простых чисел
    #39875730
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
- Гена, знаешь, когда идёшь по рельсам,то никогда не заблудишься.
- Эт ты пральна сказал, Чебурашка.
(цэ)
...
Рейтинг: 0 / 0
Алгоритм (тест простоты) для определения очень больших простых чисел
    #39875737
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здесь больше подходит диалог Алисы и Чеширского кота

— Скажите, пожалуйста, куда мне отсюда идти?
— А куда ты хочешь попасть? — ответил Кот.
— Мне все равно... — сказала Алиса.
— Тогда все равно куда и идти, — заметил Кот.
— Только бы попасть куда-нибудь, — пояснила Алиса.
— Куда-нибудь ты обязательно попадешь, — сказал Кот. — Нужно только достаточно долго идти.
...
Рейтинг: 0 / 0
Алгоритм (тест простоты) для определения очень больших простых чисел
    #39876867
Gennadiy Usov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нашел для Питона распечатку программы pow:
http://qaru.site/questions/132239/how-did-python-implement-the-built-in-function-pow

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
def pow_mod(x, y, z):				
	"Calculate (x ** y) % z efficiently."			
	number = 1			
	while y:			
		if y & 1:		
			number = number * x % z	
		y >>= 1		
		x = x * x % z		
	return number	



Это самая быстрая программа для Питона для pow?
...
Рейтинг: 0 / 0
Алгоритм (тест простоты) для определения очень больших простых чисел
    #39876998
Barlone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gennadiy Usov,
"Быстрая" и "для питона" - это оксюморон.
В природе существуют https://ru.wikipedia.org/wiki/Алгоритм_Монтгомери и https://ru.wikipedia.org/wiki/Умножение_Карацубы но это не для питона
...
Рейтинг: 0 / 0
Алгоритм (тест простоты) для определения очень больших простых чисел
    #39877008
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для прототипирования Питона вполне достаточно. Если мы упрёмся именно в процессорные ресурсы для умножения
или деления то можно подключать к питону библиотечки-ускорители.

Но об этом еще рано говорить IMHO. Мы же не делаем новый стандарт несимметричного шифра.

Мы - экспериментируем.
...
Рейтинг: 0 / 0
Алгоритм (тест простоты) для определения очень больших простых чисел
    #39877385
Gennadiy Usov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonУбежден что Геннадия ведет какая-то интуиция. И она ему подсказывает искать формулы
ускоренного сложения чисел по модулю. Очевидно что за этим стоит некая оптимизационная
цель.Расчёты на ПК по определению простых чисел Мерсенна показали, что практически за одно и тоже время определяют простые числа Мерсенна
как тест Люка-Лемера, так и эвристический алгоритм (одна формула вида pow).

Поэтому ставится задачка:

доработать алгоритм для процедуры pow таким образом, чтобы эвристический алгоритм при определении простых чисел Мерсенна работал быстрее, чем тест Люка-Лемера.maytonЕсли мы упрёмся именно в процессорные ресурсы для умножения
или деления то можно подключать к питону библиотечки-ускорители.
Но об этом еще рано говорить IMHO. Мы же не делаем новый стандарт несимметричного шифра.
Мы - экспериментируем.Скорее всего, подключение библиотечек-ускорителей мало что даст.

Ведь идёт поиск алгоритма для программы, а не поиск самой программы.

На каждом компьютере и в каждой среде на нём будет своя скорость расчёта простых чисел.
И в каждой среде будут, скорее всего, такие же ускорители.
...
Рейтинг: 0 / 0
Алгоритм (тест простоты) для определения очень больших простых чисел
    #39877390
Gennadiy Usov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если сравнивать тест Люка-Лемера и процедуру типа pow для чисел Мерсенна Mn, то оказывается, что :
- в каждом тесте количество циклов равно n;
- в каждом тесте в цикле идет умножение х = х*х;
- в тесте Люка-Лемера от числа х отнимается 2 для каждого элемента цикла;
- в pow число х умножается на предыдущее число (number) для каждого элемента цикла;
- и после каждой операции идёт операция %.

Данные рассуждения говорят о том, что скорости работы теста Люка-Лемера и процедуры pow почти равны,
о чём уже говорилось на топике по результатам работы прораммы.
...
Рейтинг: 0 / 0
Алгоритм (тест простоты) для определения очень больших простых чисел
    #39877547
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gennadiy Usov, я несколько раз обращался к тебе с просьбой собрать отклик твоего кода через равные
промежутки интервалов. Я хотел построить график. И по нему оценить асимптоматику. Это важно.
Важные даже не числа а форма графика. Парабола. Экспонента. Или x в степени x как некая ссылка
на комбинаторную сложность. Но мне показалось что данные у тебя беспорядочны и их мало и я отбросил
эту затею.

А асимптоматику надо считать.
...
Рейтинг: 0 / 0
Алгоритм (тест простоты) для определения очень больших простых чисел
    #39877661
Gennadiy Usov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonА асимптоматику надо считать.В данном топике рассматривается задачка
построения алгоритма для определения очень больших простых чисел,
например, простых чисел Мерсенна, простых чисел, расположенных недалеко от чисел Мерсенна.

Программа на ПК показала, что эвристический алгоритм 21980061 (одна формула) показывает результаты,
сравнимые с результатами работы теста Люка-Лемера:
- количество и перечень простых чисел Mn , время работы.
Проверено до n = 20000 (далее - ПК очень долго считает).

Как быть здесь с асимптоматикой?
...
Рейтинг: 0 / 0
Алгоритм (тест простоты) для определения очень больших простых чисел
    #39877679
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если полином то хорошо.
...
Рейтинг: 0 / 0
Алгоритм (тест простоты) для определения очень больших простых чисел
    #39877683
Gennadiy Usov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonЕсли полином то хорошо.Алгоритм для pow - полином?
...
Рейтинг: 0 / 0
Алгоритм (тест простоты) для определения очень больших простых чисел
    #39877701
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сложно сказать как нам поможет это знание.
...
Рейтинг: 0 / 0
Алгоритм (тест простоты) для определения очень больших простых чисел
    #39877867
Gennadiy Usov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сравнил pow из 21995132 и оказалось,
что этот алгоитм работает в два раза медленнее pow из стандартной библиотеки Питона.

Может быть есть ещё алгоритм для pow?
...
Рейтинг: 0 / 0
Алгоритм (тест простоты) для определения очень больших простых чисел
    #39877897
Barlone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gennadiy UsovСравнил pow из 21995132 и оказалось,
что этот алгоитм работает в два раза медленнее pow из стандартной библиотеки Питона.

Может быть есть ещё алгоритм для pow?Учитывая, что pow из стандартной библиотеки питона написан не на питоне, даже удивительно, что всего в два раза медленнее...
...
Рейтинг: 0 / 0
Алгоритм (тест простоты) для определения очень больших простых чисел
    #39877915
Barlone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алгоритмы есть конечно - вот можно http://cacr.uwaterloo.ca/hac/about/chap14.pdf посмотреть
...
Рейтинг: 0 / 0
Алгоритм (тест простоты) для определения очень больших простых чисел
    #39877922
Barlone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Алгоритм (тест простоты) для определения очень больших простых чисел
    #39877930
Gennadiy Usov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BarloneВот pow из питона https://github.com/python/cpython/blob/master/Objects/longobject.c#L4243
а тут gmp https://gmplib.org/repo/gmp/file/tip/mpn/generic/powm.c Если это питон, то почему скобки {?
...
Рейтинг: 0 / 0
Алгоритм (тест простоты) для определения очень больших простых чисел
    #39877973
Barlone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gennadiy Usov,
Интерпретатор питона написан на С. Сюрприз!
...
Рейтинг: 0 / 0
Алгоритм (тест простоты) для определения очень больших простых чисел
    #39881728
Gennadiy Usov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Немного отдохнул, и решил сравнить два теста: тест Люка-Лемера и эвристический алгоритм 21980061 .

Составил две программы на Питоне и выбрал интервал чисел Мерсенна от 11 до 5000 без применения делителей с шагом 2.

Получились следующие результаты:
для теста Люка-Лемера определение простых чисел Мерсенна шло 14 мин. 05 сек.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
2019-10-25-15.11.25
13
17
19
31
61
89
107
127
521
607
1279
2203
2281
3217
4253
4423
2019-10-25-15.25.30 

Для эвристического алгоритма определение простых чисел Мерсенна шло 13 мин. 20 сек.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
2019-10-25-15.31.05
13
17
19
31
61
89
107
127
521
607
1279
2203
2281
3217
4253
4423
2019-10-25-15.44.25 

То есть, эвристический алгоритм «работает» на 5% быстрее, чем тест Люка-Лемера.

Таким образом, получен самый быстрый алгоритм для определения простых чисел Мерсенна – эвристический алгоритм.
...
Рейтинг: 0 / 0
Алгоритм (тест простоты) для определения очень больших простых чисел
    #39881733
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
5% это слишком мало. Это можно списать на погрешность
- Оптимизатора Python
- Недостатки твоей реализации.

Вообще интересно было-бы рассматривать 1000% и больше. Этож криптография мать ее так.
Полумеры нам не нужны.

Уж если бахнуть так бахнуть.
...
Рейтинг: 0 / 0
Алгоритм (тест простоты) для определения очень больших простых чисел
    #39881737
Gennadiy Usov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton5% это слишком мало. Это можно списать на погрешность
- Оптимизатора Python
- Недостатки твоей реализации.

Вообще интересно было-бы рассматривать 1000% и больше. Этож криптография мать ее так.
Полумеры нам не нужны.

Уж если бахнуть так бахнуть.И там и там - Python.
Две формулы по три оператора - что проще?
...
Рейтинг: 0 / 0
25 сообщений из 76, страница 2 из 4
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Алгоритм (тест простоты) для определения очень больших простых чисел
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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