~~NOTOC~~ === Wiederholung === Pseudo-Code: Teiler einer Zahl Pseudo-Code: alle geraden Zahlen bis zu eingegebener Zahl ausgeben Pseudo-Code: dieselben Zahlen rückwärts ausgeben ====== Vom Pseudo-Code zum Python-Programm: Liste der Primzahlen (naiv; per Funktion; per Sieb Eratosthenes) ====== Schreibe Pseudo-Code auf ein Blatt Papier für das folgende Problem: * Eingabe (durch den Benutzer): eine positive natürliche Zahl * Ausgabe: Alle Teiler der eingegebenen Zahl und die Information, ob die eingegebene Zahl eine Primzahl ist Zeige mir den Pseudo-Code. Wenn ich damit zufrieden bin, öffne den Laptop und schreibe das zugehörige Python-Programm ''teiler-und-prim.py''. Verwende eine Variable ''anzahl_teiler'', in der die Anzahl der bisher gefundenen Teiler gespeichert wird. Schreibe Pseudo-Code auf ein Blatt Papier: * Eingabe: eine positive natürliche Zahl * Ausgabe: eine Liste aller Primzahlen bis zu der eingegebenen Zahl und zusätzlich die Anazahl der ausgegebenen Primzahlen Zeige mir den Pseudo-Code. Wenn ich damit zufrieden bin: Schreibe das entsprechende Python-Programm. Erkläre: ''print(t, end=" ")'' ===== Primzahlenliste mit Hilfe einer Funktion, die die Frage beantwortet, ob eine Zahl eine Primzahl ist oder nicht ===== ===== Algorithmus: Das Sieb des Eratosthenes ===== Ob die Anzahl der von dir gefundenen Primzahlen korrekt ist, kannst du mit Hilfe der Tabelle auf https://t5k.org/howmany.html prüfen. Dort steht $\pi(x)$ für die Anzahl der Primzahlen, die kleiner-gleich $x$ sind. ===== Laufzeit ermitteln ===== Ermittle, wie lange die beiden Programme für die Primzahllisten dauern, wenn man alle Primzahlen kleiner-gleich 100 Millionen ausgibt. Dazu: * Am Programmbeginn die folgenden Zeilen einfügen: import time startzeit = time.time() * Am Programmende die folgende Zeile einfügen: print('Laufzeit: ', time.time() - startzeit, ' Sekunden.') ===== Das nächste Mal ===== Zweiersystem, Umwandlung vom Dezimal- ins Zweiersystem