А если никакого смысла в "М" не вкладывается, зачем тогда эта буква Вам нужна?
Затем что мне категорически не нравятся обозначения только из цифр/чисел, их слишком легко спутать с формулами (и почти все языки программирования не допускают имён объектов с цифрой в начале, так что привык что любые параметры должны иметь имена с буквы).
Плюс не будет путаницы с к примеру
(которую тоже никто не мешает обозначать как 30-11).
Если смысл хотя бы одной буквы непонятен, то о ни полном, ни о прекрасном понимании уже говорить не приходится.
И однако ни одного примера непонимания так и не привели. Хоть говорить, хоть не говорить.
Итого:
1. Обозначение M60 является неделимым и
должно использоваться исключительно целиком. Буква М в нём никакого смысла не несёт и потому конфликта с
не возникает. Целиком М60 означает цепочки (и паттерны и всё прочее) с 60-ю делителями. В дополнение к М60 существуют М12, М24, М30, М36, М48 с соответствующим количество делителей, по ходу дела возможно будут и другие.
2. Обозначение M60n11 тоже
неделимое. Потому конфликта ни с чем не возникает. Имеет смысл цепочки (паттерна, прочего) с 60-ю делителями длиной 11 чисел подряд. Существуют и множество похожих обозначений с той же структурой (M60n10, M60n15, M24n31, M48n20 и так далее).
3. Формально M60 шире
, но использование первого как сокращённой записи второго к недоразумениям не приводило.
4. Пока обозначения из п.1 и п.2 не приводят к путанице или противоречиям не вижу достаточных оснований их менять, раз они используются в теме уже более полутора месяцев.
-- 01.05.2022, 00:23 -- - среднее время проверки, что число произведение двух простых
Такая оценка хороша когда вот это время более-менее одинаково для всех мест и всех паттернов. Однако для больших чисел это совершенно не так, мне пришлось делать трёхстадийную проверку мест
чтобы убрать необоснованные выбросы этого времени в огромный плюс (до десятков раз! собственно этим и занимался эти дни). Выбросы всё равно остались, но уже довольно редко и лишь необходимые, когда без углублённой проверки никуда не деться.
В итоге проверку пришлось делать так:
1. Сначала все места
если цепочки ALL достаточно часты (если редки, то лишь центральную часть цепочки). Если в любом месте не простое — переход к следующей цепочке. Если края не проверялись, то тут их допроверяем уже без перехода к следующей цепочки если не простое.
2. Расширение из центра в обе стороны непрерывного куска частичной факторизации мест
пока не наткнёмся на край цепочки или разложенное место с неправильным количеством делителей или на недоразложенное место с гарантированно больше необходимого количеством делителей. Если в центре точно недопустимое количество делителей и соответственно цепочка точно слишком короткая, то переход к следующей цепочке.
3. Если длина непрерывного куска достаточна, то повтор пункта 2 с более слабыми ограничениями частичной факторизации. Где-то раз в 10 медленнее п.2.
4. Если длина непрерывного куска достаточна, то повтор пункта 2 с ещё более слабыми ограничениями частичной факторизации. Ещё раз в 100 медленнее п.2.
В итоге получается непрерывный кусок в центре с не обязательно до конца разложенными границами (и может быть непроверенными на краях цепочки
) и даже не всегда внутри всё доразложено до конца (хотя примеров недоразложенности пока не встретил).
Так что Ваша оценка слишком упрощена. Хотя для цепочек M12 и верна, там таких ухищрений не делалось.
Например, если в предлагаемой системе для M60n11 всё сдвинуть налево на одну позицию, то справа вылезет
а) двойка в первой степени (добавится одно
вместо
).
б) добавится тройка в квадрате, что позволит исключить
, а это - хорошо.
Сделал такой вариант, только сильно уменьшил количество перестановок (паттернов) и кое-что наоборот сделал в более общем виде. При тестовом прогоне быстро нашлось меньшее решение для 8-ки (нумерация цепочек не совпадает!):
L4-004:11611053799095813351889011969433717230450593516167887922555614086058223400042492: 60, 60, 60, 60, 60, 60, 60, 60, 1, 0, 5, valids=8, maxlen=8, FOUND!
Количество делителей 5 означает что на месте
оказалось не простое число и сколько там делителей неизвестно, но точно больше 60.
Обратите внимание что если проверять все
, то она бы не нашлась.
Но 6 проверяемых чисел не сильно улучшили картину, с 8% время в моей проге подросло до 22%, но 78% всё равно уходит в PARI, т.е. моя фильтрация 1700:1 по таким паттернам всё ещё недостаточна, хоть и втрое лучше чем для 5-ти чисел.
Кстати, наращивать количество позиций
(в противовес
) - тоже ограничено. Нельзя все позиции сделать
.
Можно, но для длинных цепочек бессмысленно — слишком редко все искомые числа будут простыми, да и шаг заметно вырастет (и количество вариантов паттернов). А вот для длин до 5-6 (может и 7) вполне реально.