Documente Academic
Documente Profesional
Documente Cultură
Raport la
Lucrarea de laborator Nr. 2
Disciplina: Algoritmi si proiectarea algoritmilor
Chișinău – 2020
Scopul lucrării: 1. Analiza empirică a algoritmilor
SARCINA DE BAZĂ:
1. Implementați 3 algoritmi ce rezolva ciurul lui Eratostene intr-un limbaj de
programare.(JAVA)
package com.company;
import java.util.Scanner;
static int c1 = 0, c2 = 0, c3 = 0;
if (i == 1 || i == 0)
continue;
flag = 1;
isprime[i] = true;
}
for (int i = 2; i <= n; i++) {
if (isprime[i] == true) {
prime[incr] = i;
minFactorPrim[i] = i;
incr++;
}
for (int j = 0; j < incr && i * prime[j] < n && prime[j] <=
minFactorPrim[i]; j++) {
isprime[i * prime[j]] = false;
minFactorPrim[i * prime[j]] = prime[j];
c3++;
}
}
return isprime;
}
}
2.Stabiliți proprietăţile datelor de intrare în raport cu care se face analiza
Datele de intrare sunt niste numere intregi (4 biti), cuprinse in
intervalul[10...1000]
3.Alegeți metrica pentru compararea algoritmilor
Numarul de iteratii
4.Efectuaţi analiza empirică a algoritmilor propuşi
Pentru n=10:
Rezultatul primului algoritm : (Erathostenes)
2357
Numarul de iteratii : 5
Rezultatul celui de-al doilea algoritm :
2357
Numarul de iteratii : 4
Rezultatul celui de-al treilea algoritm :
2357
Numarul de iteratii : 4
Pentru n=50:
Rezultatul primului algoritm : (Erathostenes)
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47
Numarul de iteratii : 45
Rezultatul celui de-al doilea algoritm :
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47
Numarul de iteratii : 160
Rezultatul celui de-al treilea algoritm :
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47
Numarul de iteratii : 33
Pentru n=100:
Rezultatul primului algoritm : (Erathostenes)
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
Numarul de iteratii : 104
Rezultatul celui de-al doilea algoritm :
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
Numarul de iteratii : 542
Rezultatul celui de-al treilea algoritm :
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
Numarul de iteratii : 73
Pentru n=200:
Numarul de iteratii al prime1(Erathostenes) : 232
Numarul de iteratii al prime2 : 2181
Numarul de iteratii al prime3 : 152
Pentru n=500:
Numarul de iteratii al prime1(Erathostenes) : 656
Numarul de iteratii al prime2 : 11155
Numarul de iteratii al prime3 : 403
Pentru n=1000:
Numarul de iteratii al prime1(Erathostenes) : 1411
Numarul de iteratii al prime2 : 39212
Numarul de iteratii al prime3 : 830
Observam ca al 3-lea algoritm este practic mereu cel mai eficient, comparand dupa
numarul de iteratii, cu exceptia cind n<=10.In acest caz numarul iteratiilor este
egal cu celui de-al doilea algoritm.Urmatorul dupa eficienta este Ciurul lui
Erastothenes si apoi cel de-al 3lea(cu dividere).
Complexitatea prime1 este O(nlog(log(n))).
10000
8000
Numarul de iteratii
6000
4000
2000
0
n=10 n=50 n=100 n=200 n=500 n=1000
Concluzie:
Scopul acestei lucrari de laborator a fost de a efectua analiza
empirica a 3 algoritmi destinati rezolvarii aceleiasi probleme : de a afisa
numerele prime dintr-un interval anumit(folosind ciurul lui
Eratosthenes).In urma acestei analize am ajuns la concluzia ca cel mai
eficient algoritm este al 3-lea, cu complexitatea O(n), pentru ca numarul
de iteratii este cel mai mic.In urma lucrarii date am inteles ce este si cind
se foloseste analiza empirica.