Заслуженный участник |
|
20/08/14 11714 Россия, Москва
|
Последний раз редактировалось Dmitriy40 21.02.2022, 14:35, всего редактировалось 3 раз(а).
Тогда предлагаю попробовать, например, такой паттерн. Код: 45p 722p 841qr 12p 49qr 50p 507p 32p 961qr 18p 605p 28p 867p 1058p 1369qr Если я правильно понял, тут беда: числа 841, 49, 961, 1369 проверить невозможно так как после деления на них должно получаться составное число, а моя программа проверяет частное на (псевдо)простоту. Если эти числа исключить, то получится следующее (оболочка на PARI):
start=0;
stop=start+10^28;
\\ n+0 n+1 n+2 n+3 n+4 n+5 n+6 n+7 n+8 n+9 n+10 n+11 n+12 n+13 n+14
v=[ 45, 722, 1, 12, 1, 50, 507, 32, 1, 18, 605, 28, 867, 1058, 1 ];
pp=Mod(0,1); for(i=1,#v, pp=chinese(pp,Mod(-i+1,v[i])));
print(start," - start");
print(stop," - stop ");
t0=getwalltime(); gettime();
{forstep(ii=ceil(start/pp.mod),oo,10^8,
printf("%0.5fe30%c",(lift(pp)+pp.mod*ii)/1e30,13);
vi=extern(Strexpand("M12nv2.exe ",ii," ",10^8));
foreach(vi,t,
n=lift(pp)+pp.mod*t;
if(n>stop, break(2));
if(
!ispseudoprime((n+11)/28) || !ispseudoprime((n+1)/722) || !ispseudoprime((n+12)/867)
|| !ispseudoprime((n+3)/12) || !ispseudoprime((n+5)/50) || !ispseudoprime((n+6)/507)
\\! || !ispseudoprime((n+7)/32) || !ispseudoprime((n+9)/18) || !ispseudoprime((n+10)/605)
|| !ispseudoprime((n+13)/1058) || !ispseudoprime((n+0)/45)
,
next;
);
s=vector(15); k=0;
for(d=1,15, s[d]=numdiv(n+d-1); if(s[d]==12, k++););
if(k>=1, printf("%d:",n); foreach(s,d, printf("%3d,",d)); print(" len=",k); );
if(k==15, print("FOUND!!!"));
);
)}
printf("%0.3fs / %0.3fs in PARI\t\t\t\n",(getwalltime()-t0)/1e3,gettime()/1e3);
quit;
Три проверки закомментировал специально, чтобы был хоть какой-то результат. Запуск с нуля до :
T:\>gp64 -q M12nv2.gp
Mod(45865455726667545, 56880489879813600)
0 - start
10000000000000000000000000000 - stop
1108892787254924811019857945: 12, 12, 8, 12, 8, 12, 12, 24, 4, 48, 12, 12, 12, 12, 8, len=9
1568079740795230210263893145: 12, 12, 2, 12, 16, 12, 12, 12, 8, 24, 48, 12, 12, 12, 2, len=9
2089102811575393149687528345: 12, 12, 16, 12, 8, 12, 12, 24, 32, 24, 96, 12, 12, 12, 4, len=8
2613340695632862965939145945: 12, 12, 8, 12,128, 12, 12, 24, 2, 48, 12, 12, 12, 12, 16, len=9
2741167503845595583567785945: 12, 12, 8, 12, 32, 12, 12, 96, 2, 96, 24, 12, 12, 12, 4, len=8
3930508058721117480680049945: 12, 12, 16, 12, 64, 12, 12, 24, 2, 24, 48, 12, 12, 12, 4, len=8
5397672551645072232278721945: 12, 12, 4, 12, 32, 12, 12, 12, 8, 96, 24, 12, 12, 12, 2, len=9
5768712128549373822558917145: 12, 12, 2, 12, 8, 12, 12, 24, 32, 96, 24, 12, 12, 12, 64, len=8
5932790968894802738839089945: 12, 12, 4, 12, 16, 12, 12, 24, 4, 96, 24, 12, 12, 12, 8, len=8
6778584728139235741833480345: 12, 12, 32, 12,192, 12, 12, 48, 4, 48, 12, 12, 12, 12, 8, len=9
6885158962776410852090131545: 12, 12, 8, 12, 8, 12, 12, 48, 8, 12, 12, 12, 12, 12, 8, len=10
7672785830148850115563435545: 12, 12, 4, 12, 8, 12, 12, 96, 32, 24, 96, 12, 12, 12, 16, len=8
8029079592365465554321377945: 12, 12, 8, 12, 16, 12, 12, 48,128, 24, 12, 12, 12, 12, 8, len=9
8833278664409025353912361945: 12, 12, 4, 12, 16, 12, 12, 24, 32, 96,192, 12, 12, 12, 8, len=8
9546182745150018479498563545: 12, 12, 16, 12, 8, 12, 12, 48, 2, 24, 48, 12, 12, 12, 4, len=8
725.153s / 433.449s in PARI
Программа: https://dropmefiles.com/FyI3p (копия: https://ru.files.fm/u/qb4avpfzs) Virustotal тоже ругается, но уже по другому: https://www.virustotal.com/gui/file/7d1 ... 1851989cf3А то я даже пока не понял, что вы предложите для запуска: exe'шник или программу на RARI EXE. Программа на PARI лишь оболочка и финальная проверка кандидатов, выдаваемых моим exe. Но можно и как-то по другому использовать (перенапрвить в файл и потом чем угодно разбирать/проверять). -- 20.02.2022, 21:30 --Если это действительно даст то ускорение, которое Вы обещаете, Вот для этого и приложил две PARI программы, Вашу и мою, максимально одинаковые и на одном паттерне (варианте размещения чисел в цепочке). И результат их запуска. Чтобы каждый желающий убедился сам, на своём любимом интервале.
|
|