faecher:informatik:oberstufe:java:algorithmen:arrays:eratosthenes:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
faecher:informatik:oberstufe:java:algorithmen:arrays:eratosthenes:start [25.03.2021 10:03] – [Modellierung des Problems] sbelfaecher:informatik:oberstufe:java:algorithmen:arrays:eratosthenes:start [24.10.2023 07:17] (aktuell) – [Material] Frank Schiebel
Zeile 5: Zeile 5:
 ===== Idee ===== ===== Idee =====
  
-  - Man stellt zunächst eine Liste mit allen Zahlen von 2 bis gewünschten Obergrenze zusammen.+  - Man stellt zunächst eine Liste mit allen Zahlen von 2 bis zur gewünschten Obergrenze zusammen.
   - Jetzt streicht man alle Vielfachen von 2, denn das sind ja keine Primzahlen (durch 2 teilbar) und "behält" die 2 als erste Primzahl.   - Jetzt streicht man alle Vielfachen von 2, denn das sind ja keine Primzahlen (durch 2 teilbar) und "behält" die 2 als erste Primzahl.
   - Die nächste nicht durchgestrichene Zahl ist die nächste Primzahl - die 3.   - Die nächste nicht durchgestrichene Zahl ist die nächste Primzahl - die 3.
Zeile 13: Zeile 13:
 Die Zahlen, die dann noch übrig sind, sind die gesuchten Primzahlen. Die Zahlen, die dann noch übrig sind, sind die gesuchten Primzahlen.
  
-Das Grundgerüst eines BlueJ Projekts kannst du [[https://gitea.schule.social/QGM-Unterricht/bluej-eratosthenes/archive/main.zip|hier herunterladen]] oder mit dem Befehl ''git clone https://gitea.schule.social/QGM-Unterricht/bluej-eratosthenes.git'' aus dem Repo klonen.+
  
 ===== Modellierung des Problems ===== ===== Modellierung des Problems =====
Zeile 19: Zeile 19:
 Man verwendet ein Array aus booschen-Werten (wahr/falsch). "wahr" soll dabei für Primzahl stehen, "falsch" für "keine Primzahl". Wenn also das Arrayelement ''sieb[9]'' den Wert ''true'' hat, würde das bedeuten, dass wir 9 für eine Primzahl halten.  Man verwendet ein Array aus booschen-Werten (wahr/falsch). "wahr" soll dabei für Primzahl stehen, "falsch" für "keine Primzahl". Wenn also das Arrayelement ''sieb[9]'' den Wert ''true'' hat, würde das bedeuten, dass wir 9 für eine Primzahl halten. 
  
-===== Aufgabe =====+==== Aufgabe 1 ==== 
 + 
 +Das Grundgerüst eines BlueJ Projekts kannst du [[https://codeberg.org/qg-info-unterricht/bluej-eratosthenes|hier herunterladen]]. 
 + 
 +  * Überlege dir zunächst, was die Grenzen für den Index deines Sieb-Arrays sein sollten, damit die den Zahlenbereich von 1 bis zur ''grenze'' abdecken kannst. 
 +  * Vervollständige den Konstruktor: Erzeuge und initialisiere das Sieb-Array.((0 und 1 sind keine Primzahlen, die kleinste Primzahl ist 2)) 
 + 
 +==== Aufgabe 2: Die Gefangenen ==== 
 + 
 +Ein König will zu seinem Geburtstag alle 100 Gefangenen, die in Einzelzellen (von 1 bis 100 durchnummeriert) sitzen, freilassen. Dazu schickt er einen Boten, der alle Türen aufschließen soll.  
 + 
 +Während der Bote den Befehl ausführt, kommen dem König Bedenken. Er schickt einen zweiten Boten hinterher, der jede zweite Tür (d.h. die Türen 2, 4, 6, usw.) wieder schließt. Bei jedem "Schließvorgang" wird eine Türe entweder aufgeschlossen (wenn zu) oder zugeschlossen (wenn auf).  
 + 
 +Danach schickt er einen dritten Boten, der jede dritte Türe (also 3, 6, 9, ...) weiterschließt, usw. bis zum 100. Boten.  
 + 
 +Welche Türen sind am Schluss offen?  Erstelle ein Programm, das diese Frage beantwortet. Lässt sich das Ergebnis erklären? 
 + 
 +  * Überlege zunächst, wie du die Zellen und ihren Zustand modellieren möchtest. 
 +  * Als Basis kannst du [[https://codeberg.org/qg-info-unterricht/bluej-vorlage-kerker|dieses BlueJ Szenario]]((''git clone  https://codeberg.org/qg-info-unterricht/bluej-vorlage-kerker'')) verwenden.  
 +  * Beginne zunächst mit einer Methode, die den ersten Boten repräsentiert, dann einer, die den zweiten Boten repräsentiert. 
 +  * Verallgemeinere dann die Methode so, dass sie den i-ten Boten darstellt. Jetzt kannst du das Problem mit einer Schleife lösen. 
 + 
 +===Material ====
  
-Lade das BlueJ Projekt herunter oder klone dir das Repo und implementiere das Sieb des Eratosthenes. 
  
 +{{simplefilelist>:faecher:informatik:oberstufe:java:algorithmen:arrays:eratosthenes:*}}
  
  • faecher/informatik/oberstufe/java/algorithmen/arrays/eratosthenes/start.1616666617.txt.gz
  • Zuletzt geändert: 25.03.2021 10:03
  • von sbel