infoarena

infoarena - concursuri, probleme, evaluator, articole => Informatica => Subiect creat de: Hulub Ionut-Adrian din Ianuarie 10, 2008, 21:43:11



Titlul: erathostone
Scris de: Hulub Ionut-Adrian din Ianuarie 10, 2008, 21:43:11
am citit articolul despre ciurul lui erathostene si am incercat sa implementez penultima varianta in c++ dar nu am reusit. Am facut ceva de genu:
Cod:
int main()
{
      fstream f("prime.out", ios::out);
     int i, j;
     for (i = 1; i*i<MAX; i++)
         if(S[i] == 0)
            for (j = (2*i+1)*(2*i+1); j<MAX; j += 2*i+1)
               S[j/2] = 1;
     for(i = 0; 2*i+1 <MAX; i++)
        if(S[i] == 0)
           f<<2*i+1<<"-";
      f.close();
nu vreu sa imi spuneti ce am gresit, ca asta pot sa imi dau si singur seama daca postati o varianta corecta a implementarii. Va multumesc!


Titlul: Răspuns: erathostone
Scris de: Andrei Grigorean din Ianuarie 10, 2008, 23:04:09
Nu cred ca sunt multi care au implementat variantele prezentate in articol, deoarece de obicei in probleme nu e nevoie decat de cea mai simpla solutie.


Titlul: Răspuns: erathostone
Scris de: Hulub Ionut-Adrian din Ianuarie 11, 2008, 10:04:13
Da da' eu ma cam pregatesc pentru oni :) si nu vreau sa pierd punctajul din cauza timpului prea mare de executie.


Titlul: Răspuns: erathostone
Scris de: Andrei Grigorean din Ianuarie 11, 2008, 11:20:45
Nu e nevoie de optimizari extreme niciunde, nici macar la ONI :).

Eu implementez asa:

Cod:
for (int i = 2; i <= N; ++i)
    Prim[i] = 1;
for (int i = 2; i*i <= N; ++i)
    if (Prim[i])
        for (int j = i*i; j <= N; j += i)
            Prim[j] = 0;


Titlul: Răspuns: erathostone
Scris de: Alexandru B. din Ianuarie 11, 2008, 15:49:21
Eu implementez ceva in genul:
Cod:
int main()
{
    cout<<"Introduceti limita multimii: ";
    cin>>n;

    for(i=2;i<=(n/2);i++)
      for(j=2;(j*i)<=n;j++)
        ciur[j*i]=1;
    for(i=2;i<n;i++)
      if(ciur[i]==0)
        cout<<i<<' ';   
    cout<<'n';
    system("PAUSE");
    return 0;
}         
Este lucrat in C++(iti recomand sa nu l folosesti la problemele din arhiva,mai bine utilizezi C).
Oricum poate il intelegi mai bine asa.Bafta


Titlul: Răspuns: erathostone
Scris de: Andrei Grigorean din Ianuarie 11, 2008, 17:25:03
iti recomand sa nu l folosesti la problemele din arhiva,mai bine utilizezi C.

De ce sa lucrezi in C? C++ are o gramada de avantaje.


Titlul: Răspuns: erathostone
Scris de: Alexandru B. din Ianuarie 11, 2008, 19:10:36
Cred ca daca stii STL intradevar ai.Dar eu nu prea stiu asa ca nu ma pot da cu parerea cu certitudine. :)


Titlul: Răspuns: erathostone
Scris de: Ivan Nicolae din Februarie 03, 2008, 21:38:33
mi se pare o prostie sa nu inveti STL si sa ii folosesti toata avantajele. Nu tine mult... in cateva zile n-ai ce face.