Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Sieb des Eratosthenes Algorithmus, Lösung

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
12.09.2020, 19:22 Uhr
Kajam



Hallo,

kann mir jemand erklären, wie man die Lösung dieser Aufgabe verstehen soll? Wie liest man das?

Die Aufgabe lautet: Implementieren Sie den "Sieb des Eratosthenes" Algorithmus.

Lösung der Aufgabe:

C++:
#inlude <iostream>

using namespace std;

int main() {
    int array[120];
    int k;
    array[2] = 1;

    for (k=2; k<120; k++) {
        if (array[k]!=-1) {
            array[k]=1;
            for (int k=k+1; k<120; t++)
            if (t%k==0)
            array[t]=-1;
        }
    }
    for (k=2; k<120; k++) {
        if (array[k]==1)
        cout << k << " ist eine Primzahl." endl;
    }
}



Lg, Kajam

-----
Edit: cpp-Tags eingefügt und Code formatiert.

Dieser Post wurde am 20.09.2020 um 15:42 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
20.09.2020, 15:48 Uhr
Hans
Library Walker
(Operator)



Zitat:
kann mir jemand erklären, wie man die Lösung dieser Aufgabe verstehen soll? Wie liest man das?

Wie?! - wie liesst man das?! - ich verstehe gerade Dein Problem nicht.
(Ausser das ich vermute, dass Du überhaupt keine Ahnung hast, was der Code überhaupt bedeutet...)

Davon abgesehen sind noch ein paar Fehler in dem Code drin:

C++:
////////////////////////////////////////////////////////////////////////////////
#inlude <iostream>  // Syntax Error

using namespace std;

int main() {
    int array[120];
    int k;
    array[2] = 1;

    for (k=2; k<120; k++) {
        if (array[k]!=-1) {
            array[k]=1;
            for (int k=k+1; k<120; t++)  // symbol 't' has not been declared
            if (t%k==0)        // Hier steckt auch noch ein Fehler in der Logik.
            array[t]=-1;
        }
    }
    for (k=2; k<120; k++) {
        if (array[k]==1)
        cout << k << " ist eine Primzahl." endl;  // Syntax Error
    }
}


--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.

Dieser Post wurde am 20.09.2020 um 16:14 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
20.09.2020, 17:17 Uhr
Kajam



Ich weiß nicht, was der Code bedeutet, richtig. Deswegen frage ich.

Die geschickten Seiten von dir über Politik helfen mir auch nicht weiter.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
21.09.2020, 09:30 Uhr
ao

(Operator)


Der gegebene Code prüft für die ersten N Zahlen, ob sie prim sind oder nicht, indem er alle möglichen Divisionen versucht (if (t%k == 0). Das ist KEINE Lösung der Aufgabe "implementieren Sie das Sieb des Eratosthenes"! Der Trick bei Eratosthenes ist, dass eben nicht dividiert werden muss (ist zu kompliziert, multiplizieren ist einfacher).

Eine Beschreibung des Siebes (inklusive Demonstration und Pseudocode) findest du hier: https://de.wikipedia.org/wiki/Sieb_des_Eratosthenes
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: