Problemele recurente apar frecvent în informatică, unde aceeași operație se repetă de mai multe ori. Optimizarea acestor operații este crucială pentru performanță. Două tehnici fundamentale sunt ciurul lui Eratostene și exponentierea rapidă.
Ciurul lui Eratostene este o metodă eficientă de a găsi toate numerele prime până la o limită dată N. Algoritmul clasic are complexitate O(N log log N) și se bazează pe marcarea iterativă a multiplilor numerelor prime. Implementarea eficientă presupune:
Exponentierea rapidă (ridicarea la putere în O(log n)) este esențială pentru calcule modulare în criptografie și probleme de optimizare. Ideea de bază: pentru a calcula a^b, împărțim b în jumătăți recursive. Dacă b este par, a^b = (a^(b/2))^2; dacă b este impar, a^b = a * a^(b-1).
Implementarea iterativă folosește reprezentarea binară a lui b: se parcurg biții lui b de la cel mai puțin semnificativ; dacă bitul curent este 1, se înmulțește rezultatul cu a; la fiecare pas, a se ridică la pătrat. Complexitatea este O(log b).
Combinația acestor tehnici apare frecvent în probleme de concurs: de exemplu, calculul sumelor de puteri modulo M pentru numere prime dintr-un interval. Înțelegerea profundă a recurențelor și a optimizărilor permite scrierea unui cod elegant și rapid.
Concepte cheie: Ciurul lui Eratostene – găsirea numerelor prime până la N în O(N log log N), Exponentiere rapidă – ridicarea la putere în O(log n) folosind biți, Optimizarea recurențelor prin reducerea complexității
Vrei exerciții pe lecția asta + AI care te ajută pas cu pas?
Cont gratuit — 20 întrebări AI/zi, exerciții nelimitate.