[informatik]Komplexitätsanalyse - Sieb des Eratosthenes



  • also n-1 rauslassen dass nurnoch n ln ln n bleibt?



  • volkard schrieb:

    Supi. Genau die richtige Richtung.

    Nein. Die richtige Richtung ist: Am Anfang werden alle Zahlen gesetzt. Dann werden die Nicht-Primzahlen exakt einmal gesetzt. Macht insgesamt n-1 plus die Anzahl der Nicht-Primzahlen.



  • also n-1 + summe 2n (geschnitten) summe 3n ...... ?



  • adonis schrieb:

    also n-1 + summe 2n (geschnitten) summe 3n ...... ?

    Ich verstehe nicht, was du mir sagen willst. Die Anzahl der Nicht-Primzahlen ist die Anzahl aller Zahlen minus die Anzahl der Primzahlen. Beide Größen hast du gegeben.



  • ich will die menge vielfachen vom 2 + der menge der vielfachen von 3
    die in 2 nicht drin sind usw

    ok, also ich brauch die Summenformel der natürlichen zahlen - hinweis 2



  • adonis schrieb:

    ich will die menge vielfachen vom 2 + der menge der vielfachen von 3
    die in 2 nicht drin sind usw

    Dafür gibts das Inklusions-Exklusions-Prinzip. Aber ich sehe nicht, warum du das hier brauchst.

    Edit: Die eben von mir genannte Lösung ist die Endlösung. Du brauchst nicht mehr über die verschiedenen Iterationen zu summieren.



  • also summen formel für die natürlich zahlen - 2. hinweis

    Mit dem was ich oben geschrieben hab, erhalte ich doch die Anzahl der
    nicht Primzahlen. wenn ich jetzt die summe aller zahlen nehme und die abziehe
    hab ich die summe aller Primzahlen.

    ich könnte ja noch summe der mengen bilden die in nicht beiden vorkam und die draufzählen auf die menge der vielfachen von 2, dann hab ich doch die Anzahl der Schreibvorgänge.



  • also Idee menge A (4 6 8 ... n)
    Menge B (6 9 12 15 ...n)

    für die Schreibvorgänge anzahl von menge A + anzahl nicht(A durchschnitt 😎
    und so weiter + die erste for-schleife.

    Würde jetzt noch Eine Menge C hinzukommen die vielfachen von wäre der nächste
    summand wäre 0 weil C in A drin ist

    Jetzt müsste man vielleicht überlegen wie die Anzahl des weg streichens sinkt.

    oder Abschätzungen machen wenn n steigt, steigt auch die Laufzeit.
    Es wird mehr als linear ansteigen aber weniger als quadratisch, also
    irgendwas im n log n oder n log² n Bereich.

    ich würde das begründen durch da wegstreichen der vielfachen von 2.
    wenn n wächst hätte ich einen linearen anstieg. dann kommt noch das
    wegstreichen der anderen zahlen dazu, was aber weniger sein sollte als n²



  • Puh, erst einmal unterscheide bitte zwischen Summe und Anzahl. Ich kann dich nur bitten, die Antworten in Ruhe noch einmal durchzulesen. Hör auf, irgendwelche Mengen zu schneiden. An jeder Primzahlposition wird im gesamten Verlauf des Algorithmus genau einmal geschrieben, an jeder Nicht-Primzahlposition genau zweimal. Macht insgesamt 1 * n / log(n) + 2 * (n - n / log(n)).



  • mhh? also wenn ich den code durch arbeite wird erst einmal jede zahl als
    Primzahlkandidat markiert, und anschließend wird jede nicht Primalzahl
    rausgenommen. und durch die if-bedingung wird nur einmal jede der Position
    geschrieben.

    Zum Schluss sind nurnoch die Primzahlen mit 0 markiert.

    wie kommst du auf 2-mal bei jeder "nicht Primzahl" Position?

    zeile 11 ist der punkt, er scheibt die Primzahl nicht, sie wird gleich mit
    2 multiplizert.

    ende müsste also so aussehen.

    0 0 4 0 6 0 8 9 10 0 12 0 14 usw

    vielleicht ist n/j doch kein schlechter Ansatz wieviele in N lassen sich
    durch 2 teilen + den Anteil der sich durch 3 teilen lässt was aber zu ungenau
    ist

    dann wären wir schon wieder fast am anfang



  • Du hast sogar selbst geschrieben warum es 2 Schreibvorgänge für nicht-Primzahlen ist:

    wird erst einmal jede zahl als
    Primzahlkandidat markiert

    1. Schreibvorgang für alle

    anschließend wird jede nicht Primalzahl
    rausgenommen

    2. Schreibvorgang, diesmal nur für nicht Primzahlen



  • achso ja das ist wohl wahr
    ok jetzt verstehe ich langsam ...

    jetzt erscheint es irgendwie logisch...

    aber was fehlt mir? Übung oder ist es einfach nur mathematisches Verständnis
    ich wär glaub nie drauf gekommen



  • aber auf jeden fall danke,
    vorallem der geduld von Michael E..

    bringt mir zwar nichts mehr da ich schon abgegeben hab, aber sowas wurmt mich
    immer



  • für read scheint es jetzt auch logisch zu sein.
    auf jeden fall n für die äußere
    und dann nochmal für die ganzen vielfachen solgange i:=2*j < N ist.


Anmelden zum Antworten