vpbНу в общем с двумя множествами способ очевидно работает (после некоторых мелких доработок).
Засада что я не могу разбить интересующий диапазон всего на два множества, они получаются длиной порядка
элементов, столько ни вычислить, ни сохранить, ни отсортировать, ни перебрать. В принципе они все и не нужны, хватило бы и наименьших
, но как их получить без вычисления всех
мне непонятно (вопрос в частности как раз об этом). Рекурсивно спуститься не получится, они не равны суммам, там произведения.
Если б побить исходные
хотя бы на пять множеств по
элементов, то вот их уже можно и отсортировать и потом перебрать,
но количество вариантов сумм кардинально увеличивается: для двух множеств вариантов всего два (оба элемента в начале каждого множества и элементы в разных концах множеств), для трёх уже больше десятка (вроде бы, даже не выписал ещё все), и т.д. (UPD. Глупость написал, всё проще.) Наверное можно их все аккуратно выписать и закодировать, и если это делать автоматически, а не руками, то должно получиться.
Спасибо за идею, буду думать как автоматизировать процесс.
Но конечно желалось более прямого и простого пути. Ведь праймориал
, а значит зная все остатки/вычеты по простым до
можно узнать и список допустимых чисел до
и в нём будет хотя бы относительно мало чисел меньше скажем
и уже их можно более-менее быстро перебрать. Вопрос как их получить не вычисляя все допустимые
(для одной из задач) во всём праймориале. А если учесть ещё и допустимые остатки по следующей сотне тысяч простых, то можно сразу более-менее вероятно гарантировать простоту допустимых чисел не проверяя их каждое на простоту.