Подставляю паттерн в первую программу:
Код:
\\ +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20
\\ 2 11 3 2 3 2^3*13 2 5 7 3 2 3*5 2 7 5 2*3*19
\\ 43^2 19^2 2^2 7^2 5^2 41^2 59^2 23^2 3^2 31^2 2^2 37^2 11^2 29^2 2^5 17^2 47^2 3^2 2^2 13^2 53^2
\\ pqr pqr pqr pqrs pqr pqr p pqrs pqr pqr pqrs pqr pqr pqrs p pqrs pqr pqr pqrs pqr p
\\ v=[ 3698, 3971, 12, 49, 50, 5043, 362024, 529, 18, 4805, 28, 4107, 242, 841, 480, 289, 4418, 63, 4, 845, 320226 ];
\\ p pqrs pqr pqr pqr pqr p pqrs pqr pqrs pqr pqr pqr pqr p pqr pqr pqr pqrs pqrs p
v=[ 54910, 529, 12, 1573, 2738, 75, 194936, 841, 18, 961, 20, 5043, 3698, 15463, 1056, 14045, 338, 153, 4, 361, 1470];
nd=48;\\Количество делителей
pr2=primes([5,59]);\\Эти квадраты размещены
P=primes([61,523]);\\По этим простым будем проверять
ip=20;\\Перебирать будем по месту +20
vp=v[ip+1];
print("m= ",m=lcm(v)*6/vp);
print("p1=",p1=(lift((chinese([Mod(-j+1, v[j]) | j<-[1..#v]])))+ip)/vp+5/6*m+54*m);
print("P= ",P);
plt=select(x->numdiv(x)==nd/2,v,1);
print("T= ",[Set([((lift(Mod(ip-(plt[k]-1), P[j]))/vp-p1)/m)%P[j] | k<-[1..#plt]]) | j<-[1..#P]]);
print("if(",strjoin([strprintf("i%%%u!=%u", pr2[j], ((lift(Mod(ip-(select(x->x%pr2[j]^2==0,v,1)[1]-1), pr2[j]^3))/vp-p1)/m)%pr2[j]) | j<-[1..#pr2]]," && "),",");
Получаю:
Код:
parisize = 8000000, primelimit = 1048576, factorlimit = 1048576
m= 120718607808168176188378621617924378464160
p1=6635499368845584484761886884147377300780797
P= [61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523]
T= [[4, 28, 46, 47], [3, 4, 50, 51], [8, 19, 33, 44], [2, 11, 36, 50], [27, 29, 65, 70], [4, 15, 44, 58], [18, 28, 35, 45], [4, 22, 46, 64], [47, 55, 62, 70], [24, 29, 85, 90], [28, 43, 81, 97], [36, 53, 93, 105], [29, 36, 83, 90], [16, 71, 96, 118], [27, 50, 93, 116], [16, 87, 106, 134], [32, 59, 114, 116], [53, 90, 101, 138], [38, 62, 113, 137], [36, 53, 96, 113], [44, 62, 86, 104], [81, 106, 134, 159], [87, 99, 156, 168], [60, 79, 103, 122], [14, 40, 85, 150], [48, 88, 147, 187], [43, 77, 144, 169], [58, 83, 125, 150], [52, 84, 151, 183], [18, 20, 154, 156], [90, 129, 137, 176], [69, 131, 138, 200], [55, 88, 139, 172], [6, 72, 119, 192], [95, 134, 180, 219], [79, 83, 150, 154], [17, 102, 124, 209], [19, 151, 177, 250], [78, 115, 167, 204], [4, 34, 116, 191], [15, 24, 76, 234], [73, 131, 177, 235], [122, 165, 209, 252], [2, 35, 110, 210], [63, 141, 174, 252], [47, 50, 140, 264], [51, 82, 242, 273], [70, 120, 162, 212], [211, 236, 267, 292], [201, 226, 253, 278], [114, 208, 221, 315], [31, 45, 114, 128], [15, 22, 97, 289], [14, 23, 111, 120], [17, 41, 320, 344], [118, 183, 211, 276], [177, 192, 212, 227], [181, 206, 300, 325], [83, 95, 111, 123], [50, 73, 363, 386], [20, 27, 301, 308], [74, 164, 284, 374], [76, 212, 257, 393], [200, 268, 289, 357], [9, 244, 315, 359], [88, 166, 315, 370], [214, 227, 328, 341], [34, 68, 333, 367], [55, 163, 244, 417], [20, 101, 209, 290], [372, 393, 421, 442], [24, 158, 230, 364], [247, 292, 360, 405], [38, 331, 402, 434], [162, 227, 421, 447], [16, 282, 388, 397], [160, 231, 340, 411], [83, 123, 314, 354], [227, 237, 471, 496], [69, 245, 377, 446], [308, 328, 435, 455], [26, 67, 126, 490]]
if(i%5!=4 && i%7!=4 && i%11!=7 && i%13!=0 && i%17!=15 && i%19!=15 && i%23!=14 && i%29!=10 && i%31!=29 && i%37!=7 && i%41!=9 && i%43!=5 && i%47!=2 && i%53!=14 && i%59!=29,
(21:08)
Подставляю всё во вторую программу:
Код:
i1=round(1e6); i2=i1+round(1e4);\\Интервал счёта, справа не включая
\\ m = 554159729309947409007752567806326895200;
\\ a = 320226;
\\ p1 = 30475766721704852566432501877740394775491;
\\ M = [3698, 3971, 12, 49, 50, 5043, 362024, 529, 18, 4805, 28, 4107, 242, 841, 480, 289, 4418, 63, 4, 845, 320226];
m = 120718607808168176188378621617924378464160
a = 1470
p1 = 6635499368845584484761886884147377300780797
M=[ 54910, 529, 12, 1573, 2738, 75, 194936, 841, 18, 961, 20, 5043, 3698, 15463, 1056, 14045, 338, 153, 4, 361, 1470];
pows=[[1], [1,1], [1,1,1], [1,1,1,1], [1,1,1,1,1], [1,1,1,1,1,1], [3,1], [2,1], [2,1,1], [3,1,1]];\\По каким разложениям набирать статистику (степени сортировать по убыванию), можно указывать много разных, почти не замедляет
npr=matrix(#M,#pows); h=0; l=0;
{for(i=i1,i2-1,
\\if(i%5!=4 && i%7!=3 && i%11!=3 && i%13!=6 && i%17!=11 && i%19!=15 && i%23!=17 && i%29!=1 && i%31!=18 && i%37!=19 && i%41!=21 && i%43!=22 && i%47!=3 && i%53!=23 && i%59!=27,
if(i%5!=4 && i%7!=4 && i%11!=7 && i%13!=0 && i%17!=15 && i%19!=15 && i%23!=14 && i%29!=10 && i%31!=29 && i%37!=7 && i%41!=9 && i%43!=5 && i%47!=2 && i%53!=14 && i%59!=29,
p=p1+i*m; n=a*p-20;
l++;
foreach([1..#M],k, f=vecsort(factor((n+k-1)/M[k])[,2]~,,4); j=select(t->t==f,pows,1); if(#j>0, npr[k,j[1]]++); );
if(l%10==0, print("l=",l);print("i=",i);print("n=",n);for(i=1,#pows, printf("%2u, sum=%u, pows=%u\n",npr[,i]~,vecsum(npr[,i]),pows[i]); ););\\прогресс
));}
print("h=",h);
print("i=",i);
print("a=",a);
print("n=",n);
print("p=",p);
print("l=",l);
for(i=1,#pows, printf("%2u, sum=%u, pows=%u\n",npr[,i]~,vecsum(npr[,i]),pows[i]); );
И получаю в начале расчета:
Код:
l=160
i=1000387
n=177534783270875410799860980466120753986611823753970
[11,14,13, 6,12, 9,15, 9, 0,13,10,12,16,13, 0,14,17,17, 9,11,11], sum=232, pows=[1]
[46,41,40,31,35,28,31,39,12,33,33,33,34,38, 6,38,39,34,30,39,37], sum=697, pows=[1,1]
[47,36,47,52,49,41,56,48,16,44,48,47,49,55,21,48,46,49,46,45,47], sum=937, pows=[1,1,1]
[33,38,33,48,34,53,33,39,35,37,42,45,41,31,23,33,31,42,50,32,36], sum=789, pows=[1,1,1,1]
[11,24,21,17,24,18,18,14,25,24,20,16,14,17,18,20,19,11,16,26,20], sum=393, pows=[1,1,1,1,1]
[11, 3, 3, 4, 4,10, 6, 7,13, 5, 3, 6, 6, 2, 8, 6, 4, 6, 5, 5, 5], sum=122, pows=[1,1,1,1,1,1]
[ 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0], sum=3, pows=[3,1]
[ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0], sum=3, pows=[2,1]
[ 0, 0, 0, 0, 0, 1, 0, 0, 6, 1, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0], sum=17, pows=[2,1,1]
[ 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0], sum=7, pows=[3,1,1]
На 9 и 15 месте не бывает простых, но там повышенное количество квадратов и кубов
