Hirdetés

Keresés

Új hozzászólás Aktív témák

  • ArchElf

    addikt

    válasz yash #890 üzenetére

    Az 1 p az nem a számítás, hanem a program indítása.
    Mindenesetre ez most sem mérvadó, mert most látom, hogy 11 óra óta fut a mailbox-jaim és a home folderem indexelése, és az elég sok IO-t eszik. Szóval lehet hogy emiatt indul lassan a program. A prímtényezőkre bontást megcsinálja már 2-3mp alatt. Ha nem csak egyszer kellene számolni, akkor szupergyorsnak lehetne minősíteni.
    Amúgy szóban itt is tudom kommentelni.
    build() + build2()
    A PBIN fájl feladata: Minden BIT egy egy számot jelent a számsorban az 0-UInt32 tartományban. A fájl generálásnál az alapötlet az volt, hogy végig feltöltöm 0xff értékkel és aztán 2-től az összes prímszámra az összes szorzóra kinullázom a biteket. A prímszám úgy jön ki, hogy ha kinullázom az 2 összes szorzatát (kivéve saját magát), akkor a sorban következő szám a 3 lesz. Kinullázom az összes 3-ast (kivéve a 3-at), így a 4 már ki lesz nullázva, a következő szám az 5. Az 5-ösöket is kinullázom, a 6 már nulla, jön a 7, utána a 8-9-10 már kész, jön a 11... és így tovább. Másrészt a szorzókat is úgy választom meg, hogy csak az eddig ki nem nullázott számokkal szorzok. Pl 11 nál az első szorzó a 11 lesz (hiszen ezalatt már mindent leszoroztunk), 12-vel nem kell szorozni (hiszen az 2*2*3), a következő a 13 lesz... így elég "gyorsan" legenerálja az UInt32-es sort. Náhány perc alatt.
    Mivel azonban gyorsítani szeretném a számolást tudom hogy a 2-3-5 szorzatai (bájtokban) egy 15 bájtból álló sorozatot alkotnak, elég ha ezzel inicialzálom az 512MB-os tömböt és a számolást a 7-esnél kezdem (a 2-3-5-7 kezdősorozat már 105 bájt hosszú, és nem volt kedvem ezt mind bepötyögni és leellenőrizni).
    A hash függvény arra kellett, hogy a jól (!) legenerált PBIN fájlt leellenőrizzem, hiszen ez tartalmazza az összes prímet 2-UInt32 -ig.
    folyt...

    AE

Új hozzászólás Aktív témák