Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: Factorizarea numerelor  (Citit de 4435 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
marin
Strain


Karma: -1
Deconectat Deconectat

Mesaje: 22



Vezi Profilul
« : Noiembrie 01, 2008, 17:20:40 »

Ce complexitate are cel mai bun algoritm de descompunere a unui numar in factori primi?
Multumesc
Memorat
devilkind
Echipa infoarena
Nu mai tace
*****

Karma: 284
Deconectat Deconectat

Mesaje: 1.240



Vezi Profilul
« Răspunde #1 : Noiembrie 01, 2008, 17:46:03 »

sqrt(N) din cate stiu eu. Chiar si cu niste optimizari destul de bune, din cate stiu eu complexitatea ramane tot sqrt(N).
Memorat
marin
Strain


Karma: -1
Deconectat Deconectat

Mesaje: 22



Vezi Profilul
« Răspunde #2 : Noiembrie 01, 2008, 17:51:55 »

ce prompt esti Smile
pai cum fac?
Multumesc
Memorat
devilkind
Echipa infoarena
Nu mai tace
*****

Karma: 284
Deconectat Deconectat

Mesaje: 1.240



Vezi Profilul
« Răspunde #3 : Noiembrie 01, 2008, 23:11:57 »

IeI toate numerele de la 1 pana la sqrt(n) si il imparti pe n la i atata timp cat n%i == 0. Daca la sfarsit n>1 atunci il mai pui si pe n^1 in descompunere. Poti sa optimizezi facand un ciur inainte si sa iei numai numerele prime in calcul.
Memorat
Marius
Nu mai tace
*****

Karma: 154
Deconectat Deconectat

Mesaje: 572



Vezi Profilul
« Răspunde #4 : Noiembrie 02, 2008, 12:15:19 »

Ciurul consumă memorie.

Cod:
citește n;
D := mulțime vidă
e := 0
cât timp (n modulo 2) = 0 execută
    e := e + 1
    n := n / 2
sfcâtt
@adaugă lui D perechea (2, e) dacă e > 0
d := 3
cât timp (d * d <= n) execută         // (!)
    e := 0
    cât timp (n modulo d) = 0 execută
        e := e + 1
        n := n / d
    sfcâtt
    @adaugă mulțimii D perechea (d, e) dacă e > 0
    d := d + 2      // nu ai nevoie decât de numerele impare
sfcâtt
dacă (n > 1) atunci
    @adaugă mulțimii D perechea (n, 1)
sfdacă

// În D ai factorizarea lui n. O perechea semnifică un număr prim și puterea sa.

Dacă îmi aduc bine aminte, ar trebui să meargă. Smile Complexitatea e clar O(N1/2) datorită (!).
Memorat

Faceti lucrurile simplu: pe cat de simplu posibil, dar nu mai simplu.
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines