Keresés

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

  • doc

    nagyúr

    válasz asuspc96 #1253 üzenetére

    persze, mindent lehet gyorsitani :D
    a primszamkereses meg foleg olyan dolog, amit okosan vegiggondolva rengeteg prociidot lehet sporolni, van erre tobb modszer az agyatlan 'vegigmegyek es megnezem oszthato-e' megoldason kivul, kezdve az egyszeru Eratoszthenesz szitajatol a mindenfele trukkozesekig

    lehet sajat megoldast irni a szamabrazolasra is, de valoszinuleg nem lesz gyorsabb mint a masok altal mar megirt megvalositas

    mindenesetre egy 64 bites uint maximuma 18446744073709551615 , ekkora szam gyors primbontasahoz mar ugyis tul kicsi lesz az otthoni PC, szoval nem az abrazolt szam merete a szuk keresztmetszet :D

  • proci985

    MODERÁTOR

    LOGOUT blog

    válasz asuspc96 #1253 üzenetére

    két tipp:

    egyik: ha tényleg nagy számok kellenek, akkor lehet definiálni saját számábrázolási módszert, pl több long long összefűzésével. az elv hasonló, mint amikor az ember összeköt két 4bites összeadót carry bittel... csak kicsit bonyolultabb, de kb ez a lényeg. memóriaigény elszállhat.

    másik: a naiv, végigpróbálom gyökXig és ha nem osztja semmi, akkor megyek következőre megoldás minden Xre gyökXet lép, tehát X*gyökX a futásideje. másképp exponenciális. gyorsabb prímtesztelési módszer van, pl a Katona/Recski/Szabó féle Számítástudomány alapjai ír gyorsabbat. bme info/elte mat ismerősnek biztos meglesz a könyv. eléggé elméletre fókuszál, de a lényeg benne van: polinomidőben prímtesztelés megy, ugyanakkor felbontást az ember nem kap.

    namost, a másik probléma, hogy C++ban a szálkezelés fél éve jött be, itt meg lehet lehetne vele nyerni (prímkeresni több szálon nem próbáltam még, szóval nem biztos). ha csak egy szálon megy, akkor marad a kb 14%os max terhelés a procidon.

    Don't dream it, be it. // Lagom amount.

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