Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: erathostone  (Citit de 2561 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
lache92
Strain


Karma: -10
Deconectat Deconectat

Mesaje: 18



Vezi Profilul
« : 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!
« Ultima modificare: Ianuarie 10, 2008, 21:46:17 de către Hulub Ionut-Adrian » Memorat
wefgef
Nu mai tace
*****

Karma: 1049
Deconectat Deconectat

Mesaje: 3.008


razboinicu' luminii


Vezi Profilul
« Răspunde #1 : 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.
Memorat

omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
lache92
Strain


Karma: -10
Deconectat Deconectat

Mesaje: 18



Vezi Profilul
« Răspunde #2 : Ianuarie 11, 2008, 10:04:13 »

Da da' eu ma cam pregatesc pentru oni Smile si nu vreau sa pierd punctajul din cauza timpului prea mare de executie.
Memorat
wefgef
Nu mai tace
*****

Karma: 1049
Deconectat Deconectat

Mesaje: 3.008


razboinicu' luminii


Vezi Profilul
« Răspunde #3 : Ianuarie 11, 2008, 11:20:45 »

Nu e nevoie de optimizari extreme niciunde, nici macar la ONI Smile.

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;
« Ultima modificare: Ianuarie 11, 2008, 11:25:22 de către Andrei Grigorean » Memorat

omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
iepuras_binar
Strain


Karma: -1
Deconectat Deconectat

Mesaje: 8



Vezi Profilul
« Răspunde #4 : 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
Memorat
wefgef
Nu mai tace
*****

Karma: 1049
Deconectat Deconectat

Mesaje: 3.008


razboinicu' luminii


Vezi Profilul
« Răspunde #5 : 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.
Memorat

omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
iepuras_binar
Strain


Karma: -1
Deconectat Deconectat

Mesaje: 8



Vezi Profilul
« Răspunde #6 : 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. Smile
Memorat
Darth_Niculus
De-al casei
***

Karma: -13
Deconectat Deconectat

Mesaje: 143



Vezi Profilul
« Răspunde #7 : 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.
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

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