eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingPrzybliżona faktoryzacja n = a bPrzybliżona faktoryzacja n = a b
  • Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.
    atman.pl!goblin2!goblin.stu.neva.ru!cyclone02.ams2.highwinds-media.com!voer-me.
    highwinds-media.com!peer02.am1!peering.am1!peer03.fr7!news.highwinds-media.com!
    newsfeed.neostrada.pl!unt-exc-02.news.neostrada.pl!unt-spo-a-02.news.neostrada.
    pl!news.neostrada.pl.POSTED!not-for-mail
    From: slawek <f...@f...com>
    Newsgroups: pl.comp.programming
    Subject: Przybliżona faktoryzacja n = a b
    Date: Sun, 06 Dec 2015 13:40:02 +0100
    Content-Type: text/plain; charset=UTF-8; format=flowed
    Content-Transfer-Encoding: 8bit
    Message-ID: <a...@n...v.pl>
    User-Agent: Groundhog Newsreader for Android
    Lines: 29
    Organization: Telekomunikacja Polska
    NNTP-Posting-Host: 79.184.179.226
    X-Trace: 1449405601 unt-rea-a-01.news.neostrada.pl 682 79.184.179.226:58651
    X-Complaints-To: a...@n...neostrada.pl
    X-Received-Body-CRC: 3436389590
    X-Received-Bytes: 1917
    Xref: news-archive.icm.edu.pl pl.comp.programming:208978
    [ ukryj nagłówki ]

    Cośtam naklepałem, ale może ktoś ma lepszy pomysł? Rzecz jest
    praktyczna, po prostu dwa liczniki hardwareowe pracują w kaskadzie i
    każdy jest dwubajtowy, a razem są czterobajtowe, tyle że jako
    iloczyn.

    Czyli dla dodatniej całkowitej liczby n należy znaleźć dwie dodatnie
    liczby a, b takie że n = a*b; a i b nie mogą być większe niż 0xffff,
    n jest nie większe niż 0xffffffff. Jeżeli np. n jest liczbą
    pierwszą, to zamiast równości mamy kryterium minimalnej abs(n - a*b).


    Nota bene, stary kod w tym temacie miał proste i błędne:

    a = sqrt (n);
    b = n / a;

    Dla n = 18 daje to 4 i 4, iloczyn 16. A można dokładnie 9 i 2, lub 3
    i 6.

    To co wymyśliłem to rozkład na czynniki pierwsze z nawrotami, tzn.
    gdyby się nie dało to n jest zmieniane o 1. Ponieważ dla 0xffff
    dobrym rozwiązaniem jest 1 i 0xffff, to dokładność 1% osiągnięta jest
    dla n plus minus kilkaset. Czyli jest to wystarczające na liczby
    pierwsze (tylko 2 i 3 są kolejnymi pierwszymi), a być może i niektóre
    inne patologie.

    Ma ktoś lepszy pomysł?

    TIA

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: