Sieb des Eratosthenes

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Sieb des Eratosthenes

    Hallo,
    Ich soll bis morgen eine Aufgabe in Informathik lösen ,was mir allerdings sehr schwer fällt da ich leider die letzten Wochen im Krankenhaus verbracht habe.Und zwar muss ich ein Feld von 2 bis n generieren und darauf das Sieb des Eratosthenes anwenden und die Zahlen dei keine Primzahlen sind sollen gelich null gesetzt werde.
    Das Feld zu generieren ist kien größeres Poblem.Mein Problem ist die Anwendung des Siebes von Eratosthenes und das Nullsetzten der nicht-Primzahlen.
  • naja, was erwartest du denn jetzt ?

    Dann poste doch schonmal den Code den du bislang fertig gemacht hast.



    edit:

    ohne viel Aufwand findet man im Internet den Pseudocode der die wohl auf die Sprünge helfen sollte ohne alles vorweg zu nehmen.

    Quellcode

    1. const N = 10000
    2. var gestrichen: array [2..N] of boolean
    3. { Initialisierung des Primzahlfeldes: }
    4. { Alle Zahlen im Feld sind zu Beginn nicht gestrichen. }
    5. for i = 2 to N do
    6. gestrichen[i] = false
    7. end
    8. i = 2
    9. while i*i <= N
    10. do
    11. if not gestrichen[i]
    12. then
    13. // i ist prim, streiche seine Vielfachen mit i*i beginnend:
    14. for j = i*i to N step i
    15. do
    16. gestrichen[j] = true
    17. end
    18. endif
    19. i = i+1
    20. end
    21. { Ergebnis der Streichungen ausgeben }
    22. for i = 2 to N do
    23. if not gestrichen[i] then
    24. print i; ", ";
    25. end
    Alles anzeigen
  • Naja ich habe es nur geschafft das Feld zu generieren beim Rest weiß ich nicht wie ich es implementieren soll .

    Quellcode

    1. public class sde
    2. {
    3. private int [ ] zahlen;
    4. public void Feldgroesse(int x){
    5. zahlen = new int [x];
    6. zahlen[0]=2;
    7. for (int i=2;i-1<x;i++){
    8. zahlen[i - 2] = i;
    9. }
    10. }
    11. }
    Alles anzeigen
  • Sieb des Eratosthenes in Java

    Quellcode

    1. public class SiebDesEratosthenes {
    2. static final int N = 1000;
    3. static boolean liste[] = new boolean[N];
    4. public static void main(String[] args) {
    5. // Liste komplett auf false setzen
    6. for(int i=0; i<N; i++){
    7. liste[i] = false;
    8. }
    9. //Liste nach Primzahlen filtern
    10. // Überleg dir welche Zahle i und j annehmen müssen, damit du auch wirklich nur die Primzahlen bekommst unf nicht alle Zahlen auf true gesetzt werden
    11. for(int i=?;i<N; i++){
    12. for(int j=?; i*j<N; j++){
    13. liste[i*j] = true;
    14. }
    15. }
    16. // Naja und dann halt alle Zahlen ausgeben, die nicht auf true gesetzt wurden
    17. // Überleg dir was du in der if-Abfrage prüfen musst
    18. for(int i=0;i<N;i++){
    19. if( ??? )
    20. System.out.println(i);
    21. }
    22. }
    23. }
    Alles anzeigen


    Also das Problem solltest du damit lösen locker lösen können.
    Ich habe die Stellen mit Fragezeichen markiert, die du noch ändern musst (zugegebenermaßen recht trivial). Somit musst du dir aber zumindest den Code nocheinmal durchlesen und dir ein wenig Gedanken machen, was die Schleifen tun sollen.
    Du solltest schnellstmöglich die verpassten Inhalte wiederholen.

    mfg
    kauyon