Слово "должны" считаю здесь неуместным. Не должны.
И нам надо набрасываться на одну и ту же задачу не для того чтобы помогать друг другу, а чтобы дублировать работу?
Тогда я аналогично считаю слово "надо" тоже здесь неуместным. Не надо.
Но и говорить что мол эти результаты вообще ничего не стоят и никому ни для чего не пригодятся - тоже перегиб.
-- 20.11.2022, 22:20 --HuzIf it is easier for you to check, I can rewrite the code in C, but without checking.
-- 20.11.2022, 22:42 --EUgeneUSПрограмма снижения порога простых для произвольного паттерна:
Код:
v=[1,50,3,4,7,18,5,32,3,2,11];\\b1952
stop=1e22; step=10^6;\\Докуда проверять и с каким шагом уменьшать предел простых
\\Дальше сам счёт
pp=chinese(vector(#v,i,Mod(-i+1,v[i])));
pmax=floor(sqrt(stop/2/13)/step)*step;\\Делим на минимальное произведение простых, которое может появиться кроме перебираемого p^2 и выравниваем вниз до границы step (это наибольший проверяемый кусок)
dd=Vec(select(x->(numdiv(x)==1 || numdiv(x)==2),v,1));\\Какие позиции надо проверить
{forstep(p0=pmax,step,-step,\\Ниже step не опускаемся, цикл по всем кускам величиной step
forprime(p=p0,p0+step,\\Цикл внутри куска величиной step
foreach(dd,d,\\Цикл по всем возможным местам паттерна
L=chinese(pp,Mod(-d+1,v[d]*p^2));\\Начало линейного перебора
forstep(h0=lift(L),stop,L.mod,\\Линейный перебор
nn=round(h0/32); if(!ispseudoprime(nn), next);
h=nn*32; x=h%18;
if(x==2, if(!ispseudoprime((h-2)/18) || numdiv(h+2)!=12, next);
, x==16, if(!ispseudoprime((h+2)/18) || numdiv(h-2)!=12, next);
, next;
);
if(numdiv(h-1)!=12 || numdiv(h+1)!=12, next);\\Все 4 ближайших числа вокруг 32x должны быть правильными
print("32p=",h);\\WriteLog(h);\\Что-то возможно нашли
);
);
);
printf("p0=%0.2fe6\n",p0/1e6);\\Информация о прогрессе, докуда проверено, на работу не влияет
)}
Работать будет долго потому что начнёт не от 1e9, а от 19.611e9. Но если верим предыдущей программе, то можно вычисление pmax заменить просто на pmax=1e9.
Если запускать после останова для продолжения счёта, в том числе и с новым step, то в pmax указать последний проверенный кусок (он ещё раз перепроверится, что считаю не страшно).
У меня считает примерно шаг/кусок/step (1e6) в секунду, т.е. перепроверка
для конкретно этого паттерна предыдущего общего для всех паттернов результата займёт порядка 19600с=5.5ч.
Показывать вывод в лог не стал, на правильность работы не влияет, да и можно с мелкими изменениями взять от прошлой программы.