29/04/13 8307 Богородский
|
А я раньше говорил про количество. Что именно лучше считать? Но время всё-таки важнее. Надо сравнивать на одном и том же компе. Вот как считал старым способом. (Оффтоп)
Код: allocatemem(2^28);
{print();
t0=getwalltime();
v=[0, 18, 24, 48, 54, 60, 84, 90, 108];
kkor=0; w=2*3*5*7*11*13*17*19*23*29*31;
kkan=1;m=vector(31,i,[]); forprime(p=2,#m, m[p]=setminus(vector(p,i,i-1),Set(-v%p)); printf("%d: x %d: %d\n",p,#m[p],m[p]); kkan*=#m[p]);print();
print(w);print(); print(kkan);print();
mm=vector(200,i,[]); forprime(p=14,#mm, mm[p]=Set(-v%p));
x0=Mod(1,2); foreach(m[31],m31, foreach(m[29],m29, foreach(m[23],m23, foreach(m[19],m19, foreach(m[17],m17, foreach(m[13],m13, foreach(m[11],m11, foreach(m[7],m7, foreach(m[5],m5, foreach(m[3],m3, kan=lift(chinese([x0,Mod(m31,31),Mod(m29,29),Mod(m23,23),Mod(m19,19),Mod(m17,17), Mod(m13,13),Mod(m11,11),Mod(m7,7),Mod(m5,5),Mod(m3,3)])); no++;
forprime(p=32,#mm, if(setsearch(mm[p], kan%p), next(2)));
if(ispseudoprime(kan) && nextprime(kan+1)-kan==v[2] && nextprime(kan+v[2]+1)-kan==v[3] && nextprime(kan+v[3]+1)-kan==v[4] && nextprime(kan+v[4]+1)-kan==v[5] && nextprime(kan+v[5]+1)-kan==v[6] && nextprime(kan+v[6]+1)-kan==v[7] && nextprime(kan+v[7]+1)-kan==v[8] && nextprime(kan+v[8]+1)-kan==v[9],
kkor++; print(kkor," ",kan); );
))))))))));
print();print(); print(kkan); print(no);
print(); print(strtime(getwalltime()-t0)); print();
quit;} А вот так новым. (Оффтоп)
Код: {print();
t0=getwalltime();
v=[0, 18, 24, 48, 54, 60, 84, 90, 108];
d=v[#v];
a=setminus(vector(d/2,i,i*2),v);
vdel = [3,5,7,11,13]; vdelob = [3,5,7,11,13,17,19,23,29,31];pro=1; w=2*vecprod(vdel);
kgr=vector(15);slc=0;kkor=0;
print(w); print();
m=vector(31,i,[]);
for(j=1, #vdelob, p=vdelob[j];
m[p]=setminus(vector(p,i,i-1),Set(-v%p));pro*=#m[p];
printf("%d:x%d:%d: %d\n",p,#m[p],m[p],pro););
mm=vector(200,i,[]); forprime(p=32,#mm, mm[p]=Set(-v%p));
x0=Mod(1,2);
foreach(m[13],m13, foreach(m[11],m11, foreach(m[7],m7, foreach(m[5],m5, foreach(m[3],m3,
y=chinese([x0,Mod(m3,3),Mod(m5,5),Mod(m7,7),Mod(m11,11),Mod(m13,13)]);
x=lift(y);
kkan++;
lc=0;
for(i=1, #a,
for(j=1, #vdel, p=vdel[j];
if((x+a[i])%p==0, next(2)));
lc++); kgr[lc]++;
if(lc<=12,
print();print1(lc);
foreach(m[31],m31, foreach(m[29],m29, foreach(m[23],m23, foreach(m[19],m19, foreach(m[17],m17, kan=lift(chinese([y,Mod(m31,31),Mod(m29,29),Mod(m23,23),Mod(m19,19), Mod(m17,17)])); no++;
forprime(p=32,#mm, if(setsearch(mm[p], kan%p), next(2)));
if(ispseudoprime(kan) && nextprime(kan+1)-kan==v[2] && nextprime(kan+v[2]+1)-kan==v[3] && nextprime(kan+v[3]+1)-kan==v[4] && nextprime(kan+v[4]+1)-kan==v[5] && nextprime(kan+v[5]+1)-kan==v[6] && nextprime(kan+v[6]+1)-kan==v[7] && nextprime(kan+v[7]+1)-kan==v[8] && nextprime(kan+v[8]+1)-kan==v[9],
kkor++; print(); print(kkor," ",kan); );
)))));
);
)))));
print(); print(kkan); print(no);
print();print(kkan, " ",kgr[11..#kgr], " ",vecsum(kgr));print();
print(); print(strtime(getwalltime()-t0)); print();
quit;}
|
|