Despre situația din anul 2011 a progresului numeric
În 2011 fondul II a continuat să crească.
Februarie 2011 (pe la jumătatea lunii): fondul II a atins 100000 de numere, iar fondul I avea peste 10000 (cam 10500).
Pe 26 februarie a fost inaugurat modulul caronțian (CARONTE.CPP, după numele italienesc al satelitului principal al lui Pluto); aici rezultatele căutării se salvau în timp real într-un fișier text, fără să se mai pună în RAM în timpul căutării, astfel că la întreruperea curentului ar fi rămas niște rezultate în fișier.
Numerele de fond I și II erau puse în același vector, folosit ca variabilă globală (numerele depozitate, care se încărcau la începutul rulării ca numere de bază).
Erau două căutări separate în funcția principală din program: una în sus (înmulțirea numerelor din vectorul depozitatelor cu coeficienți de legătură) și, dedesubt, una în jos (împărțirea numerelor de bază la acei coeficienți cu care erau divizibile).
Cele două căutări aveau proceduri diferite de calcul al sumei de divizori. La căutarea în sus se foloseau vectorii generali de factori primi, dar la cea în jos se extrăgeau factorii primi proprii numărului, într-un vector de tip long și, dacă era cazul, și în unul Big, și se parcurgeau numai factorii primi de aici, cu care în mod sigur numărul de bază era divizibil.
În timpul căutării în sus trebuiau parcurși toți factorii primi disponibili, deoarece prin înmulțirea cu coeficientul de legătură nu se știa cu ce alți factori primi se divide produsul, în afară de cei ai numărului de bază.
În plus se făcea sumă + validare de sumă pentru toate produsele posibile (dacă erau puși 20 de coeficienți de legătură în vectorul lor, numărul de bază se înmulțea cu fiecare, și se făceau suma și validarea, plus scrierea rezultatului dacă era bună suma).
Prin contrast, la căutarea în jos împărțirea, sumarea și validarea se făceau numai la coeficienții de legătură cu care numărul era divizibil.
O îmbunătățire: să se termine parcurgerea factorilor primi când se avea garanția că numărul (nu în forma de bază, ci înmulțit sau împărțit cu coeficientul de legătură) și-a luat deja divizorii. În 2012 acest lucru se făcea folosind o variabilă mpz_t care pornea cu valoarea numărului și se împărțea până când devenea 1, și la 1 se încheia parcurgerea vectorilor cu coeficienți primi (nemaifiind divizori primi de luat).
La 12 aprilie 2011: circa 442000 de numere în fondul II, și peste 12500 în fondul I.
16 mai 2011: populația numerică a fondului II atinge 1000000 de numere.
Iulie: fondul II trece și de al doilea milion.
Limita de sus a numerelor mai crește pe la 200+ de cifre (266 de exemplu). S-a mărit și numărul de numere prime.
18 august 2011: 1000 de numere prime (884 long, 116 Big).
30 august 2011: populația numerică de fond II atinge 4 milioane.
Când s-a mărit mult numărul total de numere prime, factorii au fost porționați pe fișiere de coeficienți, în funcție de gama de mărime a numerelor de bază: de exemplu CF50.TXT grupa factorii primi pentru numerele de maxim 50 de cifre, CF70.TXT îi lua pe cei corespunzători zonei de maxim 70 de cifre, CF90.TXT pe cei pentru numerele de maxim 90 de cifre.
P.TXT grupa toate numerele prime, cu trei secțiuni crescătoare: numerele care apăreau la mai mult de o putere, apoi celelalte de tip long, apoi cele de tip Big.
P2.TXT le grupa tot pe toate, dar după ordinea descrisă în corpul de funcții TOLIL().
(va urma)
Februarie 2011 (pe la jumătatea lunii): fondul II a atins 100000 de numere, iar fondul I avea peste 10000 (cam 10500).
Pe 26 februarie a fost inaugurat modulul caronțian (CARONTE.CPP, după numele italienesc al satelitului principal al lui Pluto); aici rezultatele căutării se salvau în timp real într-un fișier text, fără să se mai pună în RAM în timpul căutării, astfel că la întreruperea curentului ar fi rămas niște rezultate în fișier.
Numerele de fond I și II erau puse în același vector, folosit ca variabilă globală (numerele depozitate, care se încărcau la începutul rulării ca numere de bază).
Erau două căutări separate în funcția principală din program: una în sus (înmulțirea numerelor din vectorul depozitatelor cu coeficienți de legătură) și, dedesubt, una în jos (împărțirea numerelor de bază la acei coeficienți cu care erau divizibile).
Cele două căutări aveau proceduri diferite de calcul al sumei de divizori. La căutarea în sus se foloseau vectorii generali de factori primi, dar la cea în jos se extrăgeau factorii primi proprii numărului, într-un vector de tip long și, dacă era cazul, și în unul Big, și se parcurgeau numai factorii primi de aici, cu care în mod sigur numărul de bază era divizibil.
În timpul căutării în sus trebuiau parcurși toți factorii primi disponibili, deoarece prin înmulțirea cu coeficientul de legătură nu se știa cu ce alți factori primi se divide produsul, în afară de cei ai numărului de bază.
În plus se făcea sumă + validare de sumă pentru toate produsele posibile (dacă erau puși 20 de coeficienți de legătură în vectorul lor, numărul de bază se înmulțea cu fiecare, și se făceau suma și validarea, plus scrierea rezultatului dacă era bună suma).
Prin contrast, la căutarea în jos împărțirea, sumarea și validarea se făceau numai la coeficienții de legătură cu care numărul era divizibil.
O îmbunătățire: să se termine parcurgerea factorilor primi când se avea garanția că numărul (nu în forma de bază, ci înmulțit sau împărțit cu coeficientul de legătură) și-a luat deja divizorii. În 2012 acest lucru se făcea folosind o variabilă mpz_t care pornea cu valoarea numărului și se împărțea până când devenea 1, și la 1 se încheia parcurgerea vectorilor cu coeficienți primi (nemaifiind divizori primi de luat).
La 12 aprilie 2011: circa 442000 de numere în fondul II, și peste 12500 în fondul I.
16 mai 2011: populația numerică a fondului II atinge 1000000 de numere.
Iulie: fondul II trece și de al doilea milion.
Limita de sus a numerelor mai crește pe la 200+ de cifre (266 de exemplu). S-a mărit și numărul de numere prime.
18 august 2011: 1000 de numere prime (884 long, 116 Big).
30 august 2011: populația numerică de fond II atinge 4 milioane.
Când s-a mărit mult numărul total de numere prime, factorii au fost porționați pe fișiere de coeficienți, în funcție de gama de mărime a numerelor de bază: de exemplu CF50.TXT grupa factorii primi pentru numerele de maxim 50 de cifre, CF70.TXT îi lua pe cei corespunzători zonei de maxim 70 de cifre, CF90.TXT pe cei pentru numerele de maxim 90 de cifre.
P.TXT grupa toate numerele prime, cu trei secțiuni crescătoare: numerele care apăreau la mai mult de o putere, apoi celelalte de tip long, apoi cele de tip Big.
P2.TXT le grupa tot pe toate, dar după ordinea descrisă în corpul de funcții TOLIL().
(va urma)
Comentarii
Trimiteți un comentariu