Erstes Ziel - Primzahlen ausrechnen

 ______________________________ 
/ Hey Tux, um was geht es hier \
\ eigentlich?                  /
 ------------------------------ 
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
                               ____________ 
                              < 2 3 5 7... >
                               ------------ 
                                 \
                                  \
                                      .--.
                                     |o_o |
                                     |:_/ |
                                    //   \ \
                                   (|     | )
                                  /'\_   _/`\
                                  \___)=(___/
                              
 _____ 
< ??? >
 ----- 
        \   ^__^
         \  (xx)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
                               _________________________________________ 
                              / ...11 13 17... Primzahlen. Aber         \
                              | Achtung: der Pfad zu den Primzahlen ist |
                              | etwas verschlungen, da wir sehr viel    |
                              \ neues kennenlernen werden.              /
                               ----------------------------------------- 
                                 \
                                  \
                                      .--.
                                     |o_o |
                                     |:_/ |
                                    //   \ \
                                   (|     | )
                                  /'\_   _/`\
                                  \___)=(___/
                              
 _____________ 
< Los geht's! >
 ------------- 
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

Einstieg[Bearbeiten | Quelltext bearbeiten]

Lese dir folgende Abschnitte der Reihe nach durch:


Lehrer: Ziel-Programm vorführen: https://github.com/feinstaub/tp64/blob/master/sample-code/prim-demo.py

Linux installieren[Bearbeiten | Quelltext bearbeiten]

  • Falls aus bestimmten Gründen die Installation heute nicht möglich ist (z. B. kein passender Stick dabei), dann mache folgendes:
    • Lese dir folgendes durch https://py-tutorial-de.readthedocs.io/de/python-3.3/introduction.html und probiere den Python-Code aus, indem du diese Python-Online-Shell verwendest: https://repl.it/languages/python3
    • Bekannte Probleme:
      • Was ist eine Fließkommazahl? --> Das ist noch nicht wichtig zu wissen; bei Interesse siehe Wikipedia.
      • Der Unterstrich (_) funktioniert bei mir nicht. --> Die Online-Konsole scheint das nicht zu unterstützen. In diesem Fall überspringen.
      • Der Abschnitt zu "komplexen Zahlen" ist unverständlich. --> Wenn du noch nicht gelernt hast, was komplexe Zahlen sind, dann bitte überspringen.
  • Schülerfragen: Was ist der Vorteil von Linux? Was macht es aus?

Arbeitsumgebung kennenlernen[Bearbeiten | Quelltext bearbeiten]

Neue Software installieren[Bearbeiten | Quelltext bearbeiten]

Mache dich damit vertraut, wie man neue Software installiert.

Die UNIX-Shell bash[Bearbeiten | Quelltext bearbeiten]

Arbeite folgendes durch:


BONUS-Aufgabe: Mit der Shell kann man sehr viel machen, wenn man weiß wie. Siehe z. B.

Python[Bearbeiten | Quelltext bearbeiten]

Interaktive Python-Shell[Bearbeiten | Quelltext bearbeiten]

Größere Programme mit Texteditor[Bearbeiten | Quelltext bearbeiten]

Programmierkonzepte[Bearbeiten | Quelltext bearbeiten]

Algorithmus[Bearbeiten | Quelltext bearbeiten]

Überlege zusammen mit deiner Gruppe einen Algorithmus (also eine schriftliche Vorgehensweise), der Primzahlen (2, 3, 5, 7, 11, 13, 17, ...) ausgibt.

Also wie würde man systematisch herausfinden, welche der natürlichen Zahlen (ab 2) Primzahlen sind?

Führe deinen Algorithmus für die ersten 7 Primzahlen per Hand durch.

Hilfestellungen (immer einen Punkt weiterlesen, wenn du nicht weiterkommst):

1) Überlege dir, mit welchen Schritten du für eine beliebige Zahl (z. B. 15 oder 17) herausfinden würdest, ob es eine Primzahl ist oder nicht.

2) Erinnere dich, was eine Primzahl ausmacht (nur durch 1 und sich selbst teilbar).

3) Was wäre, wenn du nun für eine gegebene Zahl schaust, ob es eine Zahl zwischen 2 und <der Zahl minus 1> gibt, durch die die Zahl teilbar ist? Ist es dann eine Primzahl oder nicht?

4) Wenn du die Vorgehensweise für eine beliebige Zahl hast, dann kannst du sie auf alle natürlichen Zahlen der Reihe nach anwenden.

Primzahlen-Programm[Bearbeiten | Quelltext bearbeiten]

Du hast nun folgende Programmierkonzepte und Python-Sprachelemente kennengelernt:

  • Variable (z. B. a)
  • Zuweisung (z. B. a = 5)
  • print-Ausgabe
  • Vergleichsoperatoren (z. B. a < 5)
  • if-Anweisung
  • while-Schleife

Versuche nun den den Primzahlen-Algorithmus aus dem vorigen Schritt in ein Python-Programm umzusetzen. Gebe auch die Nummer der Primzahl aus. Die Ausgabe für die ersten 10 Primzahlen sieht so aus:

1: 2
2: 3
3: 5
4: 7
5: 11
6: 13
7: 17
8: 19
9: 23
10: 29

Bonus mit grep[Bearbeiten | Quelltext bearbeiten]

1. Nutze grep (mit dem Pipe-Symbol), um zu bestätigen, dass die Zahl 676763 eine Primzahl ist.

2. Ist die Zahl 676767 auch eine Primzahl?

3. Suche nach der einemillionsten Primzahl.

Ergebnis innerhalb der Gruppe vergleichen[Bearbeiten | Quelltext bearbeiten]

  • Schreibe dein Programm so um, dass es bei Primzahlen größer als 1.000.000 mit der Berechnung aufhört.
  • Leite das Ergebnis in die Datei prim_<dein Name>.txt um.
  • Kopiere die Ergebnisdatei deines Teamkollegen auf deinen Rechner.
  • Verwende das Programm KDiff3 oder Kompare, um festzustellen, ob beide Dateien gleich sind.
Weiter