Pagini recente » Diferente pentru utilizator/matemariaescu intre reviziile 2 si 3 | Diferente pentru onis-2014/clasament-final intre reviziile 13 si 77 | Diferente pentru utilizator/wiliiamper intre reviziile 11 si 17 | Diferente pentru utilizator/caheman intre reviziile 35 si 34 | Diferente pentru ciurul-lui-eratostene intre reviziile 5 si 6
Nu exista diferente intre titluri.
Diferente intre continut:
Sa incercam o prima implementare a acestui algoritm (implementarile vor folosi limbajul java, dar sunt foarte usor transformabile in C/C++).
p(pre). {@ //class PrimeNumbersSieve1@}
{@ final int MAXSIZE = 1000001;@}
{@ char[] p = new char[MAXSIZE];@}
{@ @}
{@ //p[i] == 0 if i is prime@}
{@ @}
{@ public int getTheNumber(int n) {@}
{@ int i, j, nr = 0;@}
{@ for (i = 2; i <= n; ++i) {@}
{@ if (p[i] @}=={@ 0) {@}
{@ nr++;@}
{@ for (j = i + i; j <= n; j += i) {@}
{@ p[j] = 1;@}
{@ }@}
{@ }@}
{@ }@}
{@ return nr;@}
{@ }@}
== code(java) |
//class PrimeNumbersSieve1
final int MAXSIZE = 1000001;
char[] p = new char[MAXSIZE];
//p[i] == 0 if i is prime
public int getTheNumber(int n) {
int i, j, nr = 0;
for (i = 2; i <= n; ++i) {
if (p[i] == 0) {
nr++;
for (j = i + i; j <= n; j += i) {
p[j] = 1;
}
}
}
return nr;
}
==
O prima idee de optimizare ar fi sa nu mai luam in calcul numerele pare pentru ca stim ca singurul numar prim par e {$2$}. Deci sa vedem noua varianta a programului:
Nu exista diferente intre securitate.
Topicul de forum nu a fost schimbat.