Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
faecher:informatik:oberstufe:java:algorithmen:arrays:eratosthenes:start [25.03.2021 13:50] – sbel | faecher:informatik:oberstufe:java:algorithmen:arrays:eratosthenes:start [Unbekanntes Datum] (aktuell) – gelöscht - Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== Primzahlsuche: | ||
- | |||
- | Vom griechischen Philosoph und Mathematiker Eratosthenes von Kyrene (3. Jahrhundert v. Chr.) ist ein Verfahren überliefert, | ||
- | |||
- | ===== Idee ===== | ||
- | |||
- | - 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 " | ||
- | - Die nächste nicht durchgestrichene Zahl ist die nächste Primzahl - die 3. | ||
- | - Jetzt streicht man alle Vielfachen der 3. | ||
- | - Jetzt wiederholt man die Schritte ab 3. bis man am Ende des Zahlenbereichs angekommen ist. | ||
- | |||
- | Die Zahlen, die dann noch übrig sind, sind die gesuchten Primzahlen. | ||
- | |||
- | |||
- | |||
- | ===== Modellierung des Problems ===== | ||
- | |||
- | Man verwendet ein Array aus booschen-Werten (wahr/ | ||
- | |||
- | ==== Aufgabe 1 ==== | ||
- | |||
- | Das Grundgerüst eines BlueJ Projekts kannst du [[https:// | ||
- | |||
- | * Überlege dir zunächst, was die Grenzen für den Index deines Sieb-Arrays sein sollten, damit die den Zahlenbereich von 1 bis zur '' | ||
- | * Vervollständige den Konstruktor: | ||
- | |||
- | ==== 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 " | ||
- | |||
- | Danach schickt er einen dritten Boten, der jede dritte Türe (also 3, 6, 9, ...) weiterschließt, | ||
- | |||
- | Welche Türen sind am Schluss offen? | ||
- | |||
- | * Überlege zunächst, wie du die Zellen und ihren Zustand modellieren möchtest. | ||
- | * Als Basis kannst du [[https:// | ||
- | * Beginne zunächst mit einer Methode, die den ersten 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 ==== | ||
- | |||
- | {{simplefilelist>: | ||