Diskussion:Primzahlen: IIIa. Kapitel: Primzahlbestimmung
Abschnitt hinzufügenErscheinungsbild
Letzter Kommentar: vor 4 Tagen von Hardy42 in Abschnitt Verbesserungsmöglichkeiten des konsequenten Durchtestens
Verbesserungsmöglichkeiten des konsequenten Durchtestens
[Bearbeiten]Im angeblich verbesserten Programm wird erst die Moduloberechnungen durch 2 und 3 durch zwei Moduloberechnungen durch 6 ersetzt [t2 = ((n-1)//6)*((n+1)//6)], was etwa derselbe Rechenaufwand ist. In der Schleife [do i = 2 to sqrt(n)] werden dann trotzdem die Divisionsreste durch alle ganzen Zahlen bis sqrt(n) einschließlich 2 und 3 sowie deren Vielfache geprüft. Die Verbesserungen sparen also keinen Aufwand und beeinträchtigen stattdessen die Lesbarkeit.
Programmversion von 2006 bis 2025:
do forever say "Bitte gib eine natürliche Zahl ein (Programm beenden mit 0):" pull n if (n = 0) then leave t = 1 t2 = ((n-1)//6)*((n+1)//6) t3 = (n-2)*(n-3) if ((n > 3) && (t2 = 0)) then do t = 0 do i = 2 to sqrt(n) if ((n // i) = 0) then t = 1 end end if (t3 = 0) then t = 0 if (t = 0) then say "Die Zahl "||n||" ist eine Primzahl" if (t = 1) then say "Die Zahl "||n||" ist keine Primzahl" end