Diskussion:Primzahlen: IIIa. Kapitel: Primzahlbestimmung
Abschnitt hinzufügenErscheinungsbild
Letzter Kommentar: vor 8 Monaten 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