Avansul cercetării numerelor în 2011-2012 (Partea I)

În anul 2014 vedeam acest avans așa:

*
Porționarea factorilor primi în texte după gamele de mărime a ușurat parcurgerea numerelor din intervalele cu nu foarte multe cifre, unde erau folosite numerele prime care corespundeau numerelor, fără factori inutili care să ocupe timpul de execuție. Un nou lucru aducător de rapiditate.

Fișierele de coeficienți primi în primăvara anului 2012:

-CF50.TXT;
-CF70.TXT;
-CF90.TXT;
-CF110.TXT;
-CF140.TXT;
-CF200.TXT;
-CF360.TXT;
-P.TXT, P2.TXT (toți 5173 factorii).

La sfârșit de 2011: fondul II era peste 13 300 000 de numere.
Până la 4 februarie 2012 am introdus toate numerele multiperfecte și semiperfecte (dar doar primele 10 numere perfecte). Am folosit și pagina lui Achim Flammenkamp de la uni-bielefeld.de pentru multiperfecte (el pune anual acolo un fișier cu numerele multiperfecte cunoscute deja).

La 4 februarie 2012: peste 6200 de numere semiperfecte și multiperfecte. Din ele se puteau extrage 5173 de numere prime.
Atenție: în numărul de numere prime nu intră 2, care e caz special.Se consideră numerele prime impare.

Cele 5173 de numere prime variază între 3 și un număr de 84 de cifre.

La 4 februarie 2012 cele 5173 se înpărțeau în 3785 de numere de tip long și 1388 de tip Big, majoritatea pentru numere mai mari de 150-200 de cifre. Numerele de maxim 150 de cifre aveau nevoie de mai puțin de 10% din cele 5173 de numere prime.
328 de factori primi apăreau la puteri mai mari de 1 (dar la intervalele cu numere mai mici, corespundeau mai puțin de 328 de factori primi care să apară la mai mult de o putere, de exemplu la numerele de maxim 50 de cifre mai puțin de 60 de factori primi apăreau așa).

În luna martie 2012 am instalat un Linux prima dată în casă, dar încă nu aveam deschidere pentru GCC și GMP. Am continuat cu Windows, MIRACL și BCC32 pentru numere.

Fișierul RZ.TXT avea și funcție specială de actualizare, cu numere noi venite din căutare. Funcția se lucra în VECUNG.CPP, devenit între timp fișierul dedicat pentru așa ceva.
Am trecut de la funcția SIB la funcția QS (quick sort) pentru sortarea numerelor care trebuiau să intre în RZ.TXT, căci era nevoie de multe numere și trebuia viteză la sortare. Mai târziu a fost interclasarea (INTERC).

La MIRACL un vector trebuia să ocupe maxim 2 GB în memorie, ocupat cu numerele, altfel dădea eroare. Acolo se setează la începutul programului o precizie (Miracl precision(100, 10) înseamnă 100 de cifre zecimale în baza 10) și o dimensiune pentru buffer, când se scrie pe ecran (set_io_buffer_size(106)). Bufferul trebuia să fie cu câteva unități mai mare decât precizia.

Am găsit atunci, în februarie 2012, o soluție de scriere în RZ.TXT, ca în vector să nu intre decât numerele intervalului pe care se face actualizare, iar fișierul să permită scrierea caracter cu caracter în el, pentru partea de sfârșit (cu numere mai mari decât cele din intervalul de actualizare).

Tot fișierul trebuia scris cu cout în fișier, punând și virgule ca să ia spațiile dintre numere. În C++, pentru ca un număr citit din fișier să fie recunoscut, trebuie un spațiu alb după el, iar la numerele succesive de pe același rând, dacă sunt citite caracter cu caracter în vederea scrierii într-un fișier final, spațiile albe nu sunt luate în considerare, pentru separarea numerelor unul de altul, și atunci trebuiau și virgule, iar finalul RZ.TXT era marcat de numărul -1.

(va urma)

Comentarii

Postări populare