Prüfen ob Zahl Primzahl - Struktogramm?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet
  • Du musst nicht bis zur Hälfte von x prüfen, sondern nur bis zur (aufgerundeten) Wurzel.
  • Du musst keine while-Schleife verwenden, sondern kannst eine for-Schleife verwenden. Du kennst Start- und Endbedingung sowie Inkrement.
  • "while" und "break" sind sprachspezifische Schlüsselworte ("for" übrigens auch). Die würde ich aus einem Struktogram rauslassen.
  • anstelle der Prüfung auf i < x/2 am Ende würde ich eine boolsche Variable "isPrime" mitschleppen, die anfangs true ist, bei Bedarf im entsprechenden Zweig auf "false" gesetzt und dann am Ende ausgewertet wird. So hast du auch das EVA-Prinzip sauberer eingehalten und hast nicht eine Ausgabe an einer Stelle, an der eigentlich noch die Verarbeitung ist.
  • Dein Programm würde feststellen, dass 1 eine Primzahl ist. Das ist ein Fehler.

Ich würde sagen, dein Struktogram ist größtenteils nicht falsch, aber noch ein bisschen verbesserungswürdig. Manche Sache sieht man auch erst mit etwas Erfahrung und/oder wenn man es selbst programmiert.

idontknowwww 
Fragesteller
 18.05.2020, 12:40

Danke für deine Erläuterungen. Irgendwie finde ich while-Schleifen besser als for Schleifen^^. Auf das mit der aufgerundeten Wurzel wäre ich von selbst nicht gekommen - Danke!

0

Kann man so machen. Eine kleine Optimierung wäre noch möglich, denn wenn eine Zahl nicht durch zwei teilbar ist, braucht man die geraden Zahlen gar nicht mehr weiter zu testen.

idontknowwww 
Fragesteller
 18.05.2020, 12:26

Okay cool. Dank für deine schnelle Antwort.

0

Ich bin kein Mathematiker, aber ich glaube¹⁾, dass das richtig ist. Denk dran, dass grade Zahlen auch keine Primzahl sind (ab 3 oder höher), verdoppelt auch noch mal die Geschwindigkeit i+2 zu nehmen statt i+1.

______________

¹⁾ Mathe: Sechs; Religion: Sehr gut! → "Ich glaube die Antwort ist..."

Woher ich das weiß:eigene Erfahrung