Jurnal numeric în Săptămâna Mare

22 aprilie 2019 pe la 11:29 :

GIG70 și GIG80 au fost actualizate și mutate de pe XPOWER pe AORUS. Mâine aș dori să comand de la Senetic un HDD de 6 TB pentru ASUSPRIME, așa s-ar ajunge la 236 de TB în casă pentru numere și spațiul Asuspraimului ar fi asigurat, dar mai și refiltrez. Și ar mai trebui o cuplă SATA-III în casă. Poate joi vor fi gata, poate chiar de miercuri.
Am făcut și resegmentări în cod pentru GIG-urile de la XPOWER și THREADRIPPER (cele două calculatoare mai călărite numeric acum).

La XPOWER se merge mai mult din 10 în 10 (GIG180 este 170+180, 200 va fi 190+200 și 240 va deveni 210+240), așa încât, pe lângă dispariția GIG-urilor mai mici, de 70 și de 80, și compactarea zonei numerice 52-110 la AORUS, aici la XPOWER vor fi dimensiuni mai mici pe GIG-ul individual. Vor fi și refiltrări, mă aștept la reduceri de spațiu și așa, dar oricum mai buna segmentare cu CF-uri adecvate va duce la dimensiuni rezonabile ale marilor fișiere, că se măriseră și ele.

În plus, segmentare nouă este și la ASUSPRIME: în loc de 420 cu 1910, acum sunt în pregătire 300, 500, 1000 și 1910 (patru în loc de două, și dispare vechea graniță de 420). Mai pe vremuri, existase o veche graniță de 360, prima de sub 1910, înlocuită apoi cu 420, iar acum va fi 1000, plus refiltrări (cu tot cu noile numere legate de cele 13-17 perfecte), dar tot mă aștept la scăderi de spațiu. Și cu alți 6 TB noi, mai mult spațiu de desfășurare. Și GIG-urile de aici vor fi și ele mai mici.

Desigur, plajele de numere prime vor fi mulțimi cel mult egale cu cele 5178 (nu mai sunt 5173, că au venit în plus cinci numere prime Mersenne cu multe cifre, care corespund celor cinci numere perfecte, primul are 314 cifre) obținubile prin VECUN la luarea tuturor numerelor de fond 1 până la 1907 cifre. Toate CF-urile curente de căutare trebuie să aibă o legătură cu ce se generează la VECUN pentru fondul 1, chiar fără îmbogățire de coeficienți multiputere (așa-zișii H), încât la numerele până în 200-300 de cifre vor fi în continuare semnificativ mai puțini factori primi implicați (și mai ales până în prima sută de cifre) decât erau până spre sfârșitul lunii noiembrie 2018, cei din vechile CF-uri. Am mai zis că la CF52 sunt 122, și erau peste 3000 înainte, umplutură primă numerică prin care nu s-au găsit comori noi de fond 1, sau aparent nu s-au găsit, din moment ce granițele numerelor de fond 1, exprimate în mulțimi de factori primi componenți, au rămas cu atât de puțin față de ce era în acele CF-uri. Și fondul 2 este strict ajutător fondului 1, așa că trebuie să respecte limitele sale.

La împărțirea numerelor mai mari de 240 de cifre, cele de pe ASUSPRIME, partea cu 300, una încă bogată, păstrează avantajul că nu cuprinde nimic legat de ultimele cinci numere perfecte adăugate. Și în afară de asta există un singur factor prim de tip K (3, a cărui putere maximă depășește 64 de biți), ca la 240 (210 nu are), pe când la 420 erau deja trei. La 500 sunt șapte, la 1000 11, iar la 1910 tot 13 (nu 27 ca la CF1910, pardon, P2.TXT sau PRIME.TXT - de fapt, ultimul de folosea la SCLEPAMORIS cu K = 50).

Și de la 215 cifre în sus, dacă țin bine minte, apar peste 3 factori primi mai mari de 64 de biți (cei trei sunt numere Mersenne, de la perfectele 10, 11 și 12, și se scot special cu PURGANTE), iar de pe la 230 de cifre încolo numărul 3 depășește 64 de biți la puterea maximă de apariție. Zecea cea mai mare care nu are K-uri și mai mult de acele prime peste 64 de biți este 210 (și zona 201-210 e bogată, ocupă bună parte din vechiul 240), ca atare, la XPOWER, 240 = 210 + 240.

Lunea trecută am avut curaj să vorbesc de salariu la serviciu, poate că totuși în sfârșit se va mări. Poate săptămâna viitoare fac o drumeție lungă pe jos în Argeș și-n Olt, și pe la câmpie și pe la deal. Și din 23 mai măcar să văd bani mai mulți de la serviciu, ori să fac un gest extrem să-mi schimb locul de carieră, că va fi sigur nevoie de câștiguri mai mari. Aste zile mai trebuie să primesc 600 de lei de i-am dat pe 15 aprilie. Și tărie la postul negru fără apă. L-am ținut și în Sâmbăta lui Lazăr (prima dată în viață), și, în pofida unei băi, am stat așa și duminica cealaltă, de 14 aprilie, înaintea Floriilor. Până în 2019, cu excepția unor Sâmbete Mari, nu am ținut post negru fără apă, de la un miez al nopții la altul, sâmbăta... ori duminica.

Ar urma și acum până în noaptea de Înviere. Să vedem dacă mai fac cumpărături sâmbătă, dacă mai fac ceva gustos în casă (cozonac, pască, ouă) sau nu, dacă mai primesc noaptea, ca în ultimii doi ani - la drumeție o să am sigur nevoie de niște „combustibil energetic” pentru organism. Și după 2 mai să continue de asemenea povestea cu numerele, grija postului negru mai multe zile pe săptămână (dar, spre deosebire de 2018, fără mâncat și băut în noaptea imediat următoare unei zile de post), și poate va fi mai bine în viață.
Ar fi mare lucru să ajung și la o mărturisire a relelor din viață, dar și postul negru este important pe drum, el trebuie să fie o pregătire - vorba aceea, „Totul trece prin stomac”, nu este pur și simplu una meschină și materialistă cum pare, ci are mult adevăr în ea.

Numerele singure nu m-au făcut bucuros de viață, dar roadele de la ele continuă să se culeagă - am atins cota 28452 astăzi, cu tot cu „camera” de 50 de numere formate din cele cinci perfecte și cortegiile lor adiacente. Al optsprezecelea număr perfect depășește granița de 1910 cifre (are 1937, la toate am calculat mai sus bine numărul de cifre), și eu continui să respect granița asta numerică stabilită la 4 februarie 2012, caz în care cohorta perfectelor din fondul 1 rămâne minoră, nu devine majoră. Păstrez 17 numere perfecte.

Ora 14:22: Necazuri pe la Threadripper - nu mi-a sortat un fișier, poate după filtrare.
16:12 : Am făcut paralelizare pe NT thread-uri, astăzi, pe ASUSPRIME, și pentru MODPRIM, MODSPRIM și MODSPRIME. Am pornit niște PARFACTORSUBM (varianta paralelă a lui FACTORSUBM, am făcut una și la SCLEPAMORIS). Restul FACTORSUB-urilor, MODSPAR, MODPRIMSUM și celelalte programe numerice (și așa neglijate) nu au variantă paralelă, deocamdată.

23 aprilie după ora 11: Am comandat un HGST de 6 TB de la Senetic pentru ASUSPRIME, mâine seară ar trebui să fie gata pus.
Și așa și pe ASUSPRIME vor fi suficienți TB de desfășurare pentru numerele de la 241 la 1910 cifre, minim 18 TB și ceva, asta fără spațiul de marginale, care la rândul său poate fi de măcar vreun TB.

Și poate mai vin niște bani în zilele astea. În luna mai vin alte treburi. Deocamdată, postul negru mai ține.

24 aprilie după 9:30: Am luat o cuplă de date SATA de la Electronic Lion. Astăzi trebuie să aduc acasă 6 TB noi la ASUSPRIME și trebuie și un cablu de date. Nu cred sigur c-o mai fi vreunul liber acasă, o să mă uit, dar pentru siguranță trebuia și cel nou.
După ora 12: De restructurat paralelizările din Z1.h la părțile de jos ale PRAGW-ului. Încă n-au sosit cei 6 TB.

Pe la 15:10: Tot nu a venit UPS-ul.
După 18:30: Tot nu a venit. Mâine poate.
M-am gândit serios să trântesc postul negru. Gândurile sunt oscilante.

25 aprilie după 8:30: Am mai aranjat câte ceva prin Z.h și Z1.h. Gata paralelizarea în Z1 de ieri. În dimineața asta am lăsat „ASUSPRAIMUL” stins acasă, mi-am amintit de el când deja eram plecat. Hai să vină azi hard disk-ul de la UPS și poate aflu de mărirea salariului și de ceilalți șase sute de lei. Salariul TREBUIE mărit; îmi doresc să fac o muncă valoroasă, mai bine plătită, și este și nevoie de bani mai mulți.
Și bunătăți de cumpărat și de făcut pentru Paști, gata în zilele următoare, plus de văzut cu drumeția pe jos pe care am tot amânat-o din februarie.
Poate o să depășesc cota 28500 la numere, că tot mai este loc de noutăți.

Vedem cum mai rezist cu postul negru, că astă noapte nu prea am dormit, și cum rămâne cu ultimele două Denii - Douăsprezece Sfinte Evanghelii și Prohodul Domnului.

La ASUSPRIME am șters ce ținea de vechiul GIG420.TXT și am refiltrat deja partea de până la 500 de cifre (deci inclusiv de prin GIG1910.TXT). Va fi și un GIG1000, iar 1910 va cuprinde numai partea de la 1001 cifre în sus, așa că vor fi niște GIG-uri mai mici. Și la refiltrare deja s-au obținut destule zeci de GB (poate peste 100) în minus. Dar vor fi și 6 TB în plus.

Să se mărească salariul în lunile următoare.
O să am de plătit pentru niște treburi în luna mai (inclusiv verificarea periodică la gaze și factura din aprilie la curent, plus rata și prima de credit). Să aibă urmare fructuoasă faptul că pe 15 aprilie am avut curaj să zic de salariu.
Te rog, Doamne Iisuse Hristoase, ai grijă de noi și de lucrurile noastre!

Ieri XPOWER-ul a avut Teamviewer-ul închis pentru aproape cinci ore, între „după 3 după-amiaza” și „după 8 seara”, dar doar asta, că numerele de pe el au continuat să meargă.

După 9:40: Rezultă că totuși pachetul de la Senetic a ajuns dimineața asta la „Peni-Peni-Otopeni”. Mai așteptăm.

Și sunt 28495 de numere deocamdată. Nu știu dacă trec de 28500 astăzi, dar luna asta sper să fie. 28001 erau la început. 26623 la începutul anului. 1872 venite între timp, în mai puțin de o treime din an, și în tot anul 2018 au fost 2533, iar în 2017 1241. În 2016 46, în 2015 26. Prin 2014 au fost 320, dacă zic bine. În 2013 circa 300, dar deja se pierde exactitatea șirului. Mai jos și mai și; am mai făcut calcule estimative pentru câte numere de fond 1 au venit anual.

Stabileam că în primăvara lui 2005 am început cu primele N numere perfecte (prin luna mai asta), în primă fază primele patru numere (6, 28, 496 și 8128) pe calculatorul acela cu 133 de megaherți Intel Pentium prima generație. Pe primele trei numere le știam de la școală, din toamna anului 2004, iar al patrulea a venit ca o surpriză pe ecran. S-ar fi zis că la fiecare ordin zecimal există un număr perfect - o cifră, două, trei, patru.
Dar când am vrut să caut mai departe după al cincilea (din 1 în 1 și de la 2 la n div 2 plus divizorul 1, dacă spun bine), am văzut cum se cască groapă mare până la primele sute de mii. Căutam pe interval și, cum nu găsea, îmi trântea la sfârșit pe ecranul monitorului mesajul „Aici nu sunt numere perfecte.”, și așa a devenit tot mai interesantă vânătoarea următorului număr perfect.

Și așa am devenit treptat un Stalker al numerelor.

Adică cum? Sunt patru astfel de numere și după aceea, mai departe, chiar nimic?... Dacă numerele prime sunt infinite, de ce cele perfecte (cu așa o proprietate frumoasă a egalității cu suma divizorilor... naturali diferiți de ele însele) să fie atât de puține? Așa era logica mea vânătorească pentru numere în mai 2005.

La acea vreme NU aveam cum să îmi pun probleme de memorie și spațiu mare pentru numere, doar era de simțit nevoia ca megaherții procesoristici să fi fost mai mulți, pentru plus de rapiditate la operațiile aritmetice, și, desigur, optimizări în codul algoritmic, ca să meargă mai repede. Că și felul cum își scrie programatorul codul contează, de pildă am mai făcut comparație între „2 și n div 2” și „2 și radical” ori mai degrabă de la radical în jos. Ce să mai zicem de produsul de prelucrări* de puteri de factori primi bine definiți și presalvați undeva (cu tot cu puteri, apropo de PUTERNUM).

* Puterile în sine, în produs, compun numărul; pentru sumă, trebuie ca aceste puteri, individual, să fie modificate într-un atare fel.
De exemplu dacă numărul nostru se divide cu 3 la puterea 5 (243), avem nevoie de suma divizorilor lui 243, ca factor integrant din produsul care va constitui suma divizorilor numărului - ea este produsul sumelor de divizori ai puterilor de factori primi componenți ai numărului. Cu excepțiile notabile ale lui 0 (o infinitate de divizori nenuli însumabili) și 1 (nici prim, nici compus, are suma egală cu el însuși). Iar numerele prime au sume de divizori foarte ușor de obținut.

Și deci la 243 se mai înmulțește o dată cu 3 numărul, se scade 1 din 3 la a șasea (729 - 1 = 728) și rezultatul se împarte la numărul prim (3) minus 1, deci la 2, și ajungem la 364.
Sau dacă o putere primă a unui număr este 7 la a șasea (117649), facem suma sa de divizori (ca factor al sumei totale a numărului, sau sumă parțială de divizori pe baza factorului component 7) înmulțindu-l cu alt 7 (823543 sau șapte la a șaptea), scăzând 1 și pe 823542 împărțindu-l la „șapte minus unu”, și așa avem 823542/6 = 137257. Așa că suma divizorilor lui 117649 este 137257.

Ori pentru 5 la a treia (125) facem 125*5 și scădem 1, apoi împărțim la 4 și avem 156, că așa ajungem de la (625-1) / (5-1).

Formulă: Dacă avem n^k, unde n este număr prim și k exponent natural de putere, atunci suma divizorilor naturali ai lui n^k este [n^(k+1) - 1] / (n-1).

Și suma divizorilor unui număr făcut din mai multe puteri de factori primi este produsul tuturor sumelor de deasupra, unde n-urile sunt primii numărului.
Iar dacă lucrăm cu o plajă de numere prime bine cunoscute, repetitive în gama numerelor de lucru ale noastre și salvate deoparte alături de puterile lor și de sumele de divizori corespunzătoare (apelabile deci pe cale vectorială și matricială), atunci construcția sumei de divizori a fiecărui număr interesant în parte se simplifică mult, în special dacă știm să ne dăm seama când să încetăm de parcurs vectorul de numere prime (la numerele mai mari sunt doi vectori separați, pe 64 de biți fără semn și respectiv pe mpz_t pentru numerele prime peste 2 la a 64-a). Puterile și sumele de divizori ale puterilor sunt în matrici.

Și cum ne dăm seama că ne putem opri din interogat elementele din vectorul și așa finit de numere prime?
Criteriul spune că atunci când variabila „sumă de divizori” a devenit mai mare decât numărul nostru, înseamnă că s-a calculat toată suma divizorilor (s-au făcut toate acele produse). La construirea sumei de divizori a unui număr, negreșit se trece mai întâi prin vectorul de numere prime „mici”, oricum majoritare la numere, care vector este ajustat și el în funcție de ce plajă de numere de cifre (mărime zecimală, de pildă 53-70, 71-80 sau 101-110 cifre) este vizată.

Iar vectorul de prime pe 64 de biți (numit generic b) este și el împărțit în mai multe zone de elemente.
Prima dată se începe cu elementele cele mai băgate în seamă (cele mai prezente în numere), în ordinea descrescătoare a frecvenței de apariție, și anume cele „multiputere”, care se întâmplă să apară la puteri peste 1 (și asta se întâmplă de destul de multe ori). Factorii aceștia primi sunt numiți „de tip H”, H-urile fiind constantele care, pentru fiecare plajă de mărime numerică, definesc numărul de astfel de elemente prime multiputere.
La numerele cu mai multe cifre (peste 210 cifre), cel puțin unul dintre elementele prime (3, în primă fază) poate apărea la o putere care duce dincolo de 2 la a 64-a, și atunci și zona asta de multiputeri prime se împarte în două: cele susceptibile de „peste 64” se cheamă factori de tip K (K-urile sunt H-uri în miniatură, special pentru primele ale căror puteri pot depăși 2^64), iar celelalte multiputeri sunt H-K, desigur. Și așa se face tot H-ul la numerele mari.
Nu se calculează efectiv puterile prime și sumele lor pe parcursul sondării spațiului numeric, ci sunt precalculate în matrici la începutul rulării programului (matrici de tip div pentru puteri și sum pentru sumele divizorilor, împărțite la rândul lor în „pe 64 de biți” și „mpz_t”).

Următoarea zonă de elemente prime sub 2^64 din vectorul nostru, și ultima de fapt, este a numerelor prime care, dacă fac parte din factorizarea* unui număr, apar într-o singură putere, și atunci suma divizorilor unui număr prim este chiar el plus 1 (și nu se face adunarea asta, ci deja sumele sunt presalvate în alt vector și de acolo se iau). Numeric vorbind, primele uniputere sunt mai multe, chiar mult mai multe, decât cele multiputere, asta în ce privește fondul 1 numeric. La fondul 2, prin căutări numerice speciale, H-ul mai poate fi crescut prin înmagazinare de numere noi care au putere multiplă și la factori primi componenți care inițial sunt încadrați la „non-H”, dar în practică H-urile de la fondul 1 (care fond 1 este ținta, scopul tuturor căutărilor) nu au ajuns prea mari.

*Factorizare înseamnă chiar produsul de puteri de factori primi din care este făcut un număr natural. Se scriu factorii primi ridicați la puterile de apariție, cu semnul înmulțirii între aceste puteri de prime.
Cum este 120: 2^3 * 3^1 * 5^1, adică 8*3*5.

La numerele D-H, fiind uniputernice, nu este nevoie decât de un vector auxiliar pentru salvarea sumelor de divizori ale puterilor prime-unitate (numărul prim plus 1). La H-uri, fiind mai multe puteri posibile pentru factorii primi, trebuie tablou bidimensional (matrice 2D).

Și deci numerele prime uniputere sunt „non-H” sau D-H, unde D este totalul elementelor prime pe 64 de biți din vector. La rândul lor, uniputernicele sunt parcurse în ordinea descrescătoare a frecvențelor de prezență în factorizările numerice (bine, frecvențele astea sunt determinate eșantionat, în fapt doar pe numerele de la fondul 1 - toate din plaja de mărime vizată - și înainte erau pe eșantioane din mult mai multele numere de fond 2).

Iar când suntem în zona de „D-H” (și la numerele sub 53 de cifre și imediat după terminarea parcurgerii zonei întâi, de H), de fiecare dată când s-a înmulțit viitoarea sumă de divizori cu suma divizorilor unei puteri de divizor prim D-H, se compară viitoarea sumă mare (B, de tip mpz_t) cu numărul nostru a cărui sumă de divizori o construim în B, și numărul se cheamă „unu”, tot mpz_t.
Și când B a ajuns mai mare decât unu, înseamnă că toată suma de divizori s-a calculat și putem ieși din metoda (sau funcția) care face suma.

La numerele mai mari, este nevoie și de vectorul mare, de elemente prime peste 64 de biți sau E-uri (E este numărul lor), care sunt tot uniputere și au sumele salvate într-un vector auxiliar ca la D-H - uri. Astfel, se evită adunarea cu 1 în mpz_t, trecându-se direct la înmulțirea cu suma parțială, și tot așa, după fiecare divizor din acesta depistat, se verifică dacă suma mare B a ajuns mai mare decât numărul nostru unu.

Cu excepția numărului natural 1, orice număr natural este mai mic decât suma divizorilor săi (chiar și 0, față de infinitate).
Astfel, 2 este cu 3, 3 cu 4, 4 cu 7, 5 cu 6, 6 cu 12, 7 cu 8, 8 cu 15 și tot așa. Pe măsură ce numerele cresc, suma divizorilor poate ajunge de 5-6-7-8-9-10-11 ori mai mare decât numărul, dar astea cu de 10-11 ori frizează sau bat deja mia de cifre, și numerele mele sunt de maxim 1910 cifre.
În fond, „orile” astea de care sunt sumele mai mari decât numerele se cheamă abundențe.

Se consideră că atunci când se face verificarea că suma B a depășit numărul unu, ultimul număr cu care B a fost înmulțit (o sumă de divizori de factor prim sau, după H-uri, de putere de factor prim) este mai mare decât poate fi abundența pentru clasa de mărime a numărului respectiv. La D-H și la E, B este înmulțit cu „numărul prim + 1”, și în mod sigur, la cât sunt de mari acele elemente, ele depășesc sigur abundența posibilă a numărului, care poate fi maxim pe la 11 (și asta dincolo de mia de cifre, la numerele de până în 2-3 sute de cifre nu știu dacă ajunge să depășească 9, iar până în prima sută de cifre nu știu dacă poate atinge 7 abundența).

Chiar și la numerele de maxim 52 de cifre, unde prima verificare se face după ieșirea din zona de H-uri, unde se află factori primi ca 3, 5, 7 și 11 (ce pot fi și multiputere), în primul rând abundențele lor sunt cele mai mici, cred că maxim 6 și ceva, și apoi ultimul număr prim (divizor) dintre H-uri are slabe șanse să fie unul dintre cele mici, sub 10, și să fie și uniputere (caz în care B se înmulțește cu primul+1), că la multiputere sigur se ajunge peste acel „6 și ceva” abundențial. H-urile mai mici sunt mai la început, 3, 5 și 7 fiind numere cu foarte mari frecvențe de apariție în factorizări (și apetente la multiputeri).

S-ar putea ca la numerele chiar foarte mici (maxim 10-20 de cifre, și cu nimic dincolo de H-uri) ultimul divizor prim verificat înainte de compararea sumei B cu numărul unu să fie un număr prim mic, și uniputere (4 fiind suma lui 3), dar pe-acolo și abundențele sunt chiar mai mici, de pildă până la un miliard abia se atinge abundența 5 și ceva - 122522400 fiind primul număr a cărui sumă de divizori este de 5 ori și ceva el, și nu „5 virgulă mult”, spre 6), ci doar vreo 5.013, și conform cu distribuția factorilor primi în vectorul de 52-uri, ultimul H verificabil la acest număr, fie el și uniputere, sigur nu poate fi sub 7 (deci sub 8 înmulțitorul lui B).

Criteriul de mai sus cu compararea sumei cu numărul în raport cu cât poate fi de mare abundența, după cum sunt dispuse numerele prime, nu dă greș.
Iar acolo unde deja vorbim de „ultimi divizori primi” mai mari de 1000, fie ei și uniputere, și mai ales mepezetele... e clar cum depășesc ei abundența.

Ca atare, în majoritatea situațiilor, dacă numerele nu se divid cu cele mai codașe numere prime din vectori, se și întrerupe parcurgerea vectorilor primi, posibil chiar cu mult înainte de sfârșit, chit că există overhead-ul comparațiilor repetate la mpz_t (B și unu).
Dar în general numărul de factori primi componenți ai unui număr este destul de mult sub cel total de numere prime disponibile la respectiva plajă de mărime numerică.

De pildă la numerele de 151-160 de cifre, sunt acum 398 de factori primi pe 64 de biți și trei care sunt mai mari (numere prime Mersenne, pot fi prelucrate special cu puteri de 2*), dar un număr de acolo nu apucă să aibă decât, eventual, maxim vreo 10% din ei, poate puțin mai mult (39 din 398, poate vreo 40), oricum nu îi poate conține pe toți. Și o parte din ei, neapărat de la H (mai puțini, ce-i drept, și se consideră că sigur are ceva și pe la D-H, pe câtă vreme la 52-uri pot să fie și numere care au doar la H și, fără a face acolo comparații repetitive în bucla de (mai puține) H, se face totuși una imediat după ea; pe când la numerele mai mari comparațiile încep de la D-H, și ar putea fi câteva zeci de astfel de D-H - uri, dar în fine, ultimul element verificabil ar putea fi în prima jumătate a celor 398 (și fără nimic mai sus) și atunci se întrerupe parcurgerea, fără a se mai verifica divizibilitatea cu alți factori primi.

*2 este un număr cu regim special. Singurul număr prim par NU face parte din vectorii de numere prime, în plus se tratează cu puteri ale lui și acele cazuri când sunt implicate anumite numere prime (peste 64 de biți) Mersenne, care diferă cu 1 în minus față de puteri de 2, iar primele Mersenne respective (ai numerelor perfecte de pe pozițiile 10, 11 și 12, celelalte 14 fiind lăsate în pace - 9 prea mici, 5 prea mari, și s-ar și strânge multe) sunt și ele excluse din vectorul de numere prime mpz_t, fiind pregătite deoparte niște operațiuni pe biți care se leagă de puterile lui 2.
Și în primul rând puterea de 2 dintr-un număr mpz_t se determină cu mpz_scan1(mepezetea, poziția0), iar suma ei de divizori (salvată într-un vector de sume de divizori ai puterilor lui 2) este puterea*2 minus 1.

Așa că știm acum că, dacă la 160-uri spunem că sunt 398 de numere prime pe 64 de biți (iar acele trei Mersenne NU sunt în vectorul mare, ci sunt tratate tot cu ajutorul lui 2, considerându-se că pot fi simțite dn puterea de 2 a numărului), sigur 2 nu este trecut în fișierul de factori primi, ci de la 3 încolo sunt ele.

(După ora 12 sunt 28496 de numere, UPS-ul încă în așteptare și încă mai țin postul negru fără apă.)

La numerele între 53 și 70 de cifre, sunt prezente doar două din acele trei numere prime Mersenne (și cele două numere perfecte aferente), iar după 70 apare și al treilea, și excluderea primelor din vectorul de mepezetele prime se face cu niște funcții speciale de curățare: PURGANTE() pentru toate trei și PURGANTE2() pentru când sunt doar cele două mai mici.

Primele nouă numere prime Mersenne sunt mai mici, pe 64 de biți, iar celelalte cinci sunt imense (peste 155 de cifre cel mai mic, între 680 și 690 ultimul), pe când cele trei zise au, totuși, sub 50 de cifre fiecare - 27, 33 și 39 (și sunt doar trei, sau doar două, nu trebuie o condiționare prea complexă).
Iar acolo unde sunt implicate prime Mersenne mai mici, se poate ca puterea de 2 a numărului să nu fie mereu compatibilă cu cea a Mersennelui (de pildă 524287 este 2 la 19 minus 1, dar puterea de 2 a numărului care se divide cu 524287 nu trebuie obligatoriu să fie 18, în fondul 2, și presupun și invers).

La numerele mai mari, dacă există un divizor prim Mersenne, atunci și puterea de 2 cu care se divide numărul trebuie să fie compatibilă, având exponentul cu 1 mai mic decât cel al puterii de 2 care se obține adunând 1 la numărul prim Mersenne.

De pildă dacă avem 2^127-1 (alui al doisprezecelea număr perfect) ca divizor Mersenne, trebuie că numărul nostru se împarte și cu 2^126, și am considerat reciproc adevărat (dar poate cine știe...); în fine, crezând că toate numerele de fond 2 cu 2^126 se împart și la acel Mersenne, se verifică la început ce putere de 2 au (dacă este 88, 106 sau 126), și dacă da, se ține cont de acel Mersenne; și, pentru numerele până în 210 cifre, nimic în vectorul de numere prime peste 64 de biți (doar acele trei Mersenne, excluse). Așa am considerat plajele de factori primi.

La 240 mai apar doi factori primi non-Mersenne, dar încă se face PURGANTE pentru ceilalți trei. Dincolo de 240 sunt mai multe prime mpz_t și nu mai fac nicio curățare.
Iar sub 53 de cifre, oricum, toți factorii primi posibili sunt pe 64 de biți. Și până la 210 cifre, pe baza fondului 1, nici nu există puteri prime care să treacă de 2^64 (la 240 este una, a lui 3, iar mai departe mai multe).

Așa că până la 210 cifre nici K nu are o valoare, este zero.

Din ce am văzut într-o zonă unde sunt numere divizibile cu acele trei puteri de doi, nu apar cazuri unde să nu fie divizibile și cu Mersennele.

După ora 13: Tocmai a sosit și Seneticul la mine. Mulțumesc, Doamne Iisuse Hristoase, și să fie bine și mai departe!

Așa că la numere vor fi, din seara asta, 236 de TB de spațiu, cu minim 18.5 TB la ASUSPRIME; depinde și de cum sunt distribuite MARG-urile (trei de 2 TB și două de 1).
Normal ar fi: AORUS cu 61.59 TB, XPOWER cu 65, THREADRIPPER cu 80, ASUSPRIME cu 19.5, SLI PLUS cu 8.24 și Veritonul cu 2.04, total 236.37 TB.

Să crească salariul, să câștig mai mult în 2019 și poate o să mai vină un NVME de 1 TB la Threadripper. Și o placă video de 11 GB GDDR6 2080TI. Iar progresul numeric va continua.

Poate că la toamnă or să fie pe piață Threadrippere de 128 de threaduri, dar nu o să mai iau nimic din procesoare noi în 2019. Nu voi mai asambla vreun calculator nou prea curând, cum prevăd, chiar și cu un salariu mai mare din lunile următoare, înainte de toamnă. În schimb, cu bani mai mulți, calculatoarele de acasă trebuie să continue nestingherite, cu câte un nou adaos hardware (NVME, eventual video, mai un U2), toate șase, fără să mai asamblez o mașinărie nouă și fără stricăciuni. Prin 2020 s-ar putea să apară DDR5 pe piață (iar din 2019 PCI-E 4, dar nu voi lua vreo placă de bază nouă). Poate când o fi cu DDR5 să mai fac vreun calculator nou, că în 2019 tot cu memorie DDR4 se merge și acasă sunt PLIN de ea (576 de GB, plus 16 GB de DDR3 la Veriton).

Trăiască roadele progresului hardware, numeric și algoritmic!

Să crească banii în casă în 2019! Și să fim toți bine.

Comentarii

Postări populare