hab hier ne aufgabe die mir recht schwer fällt, obwohl sie wahrscheinlich recht einfach ist. es geht um primzahlen.
die aufgabenstellung lautet wie folgt:
a) Die Funktion berechne_primzahl(nummer: in natural) berechnet für die eingabe nummer=n die n-te primzahl und gibt diese als funktionswert zurück.
hier mal meine bisher erarbeitete version - ist leider sehr wenig, aber ich weiss jetzt nicht genau wie ich das mit dieser nummer implementieren muss:
package body Primzahlen is
function Berechne_Primzahl(Nummer : Natural) return Natural is
begin
-- wir die null als nummer eingegeben, so wird die null ausgegeben
if nummer = 0 then
return nummer;
end if;
-- die schleife:
-- für die länge des arrays wird geloopt. dabei ist prim die aktuelle zahl
-- vor der prüfung wird die zahl prim um 1 erhöht.
-- meine idee: jede zahl wird darauf geprüft, ob die beim teilen durch 2,3,5,7
-- einen rest ausgibt, oder ob der rest null ist. ist rest null so ist es keine
-- primzahl, ist der rest größer wie null, so handelt es sich um eine primzahl
-- . dabei ist die reihenfolge sehr wichtig. von 2 bis 7. ist bei der 7 der rest
-- immernoch ungleich null so muss es ne primzahl sein. es klappt so, da davor
-- alle anderen teiler ausgeschlossen werden. sieben ist der letzte grosse teiler.
--
-- die prüfung wird durch 4 if funktionen geschehen. sobald die zahl die letzte
-- if funktion erfolgreich passiert hat, wird sie als primzahl anerkannt und die
-- nummer um eins erhöht. wird die gewünschte nummer erreicht, ist die prozedur
-- beendet und die zahl wird zurückgegeben und erscheint dann auf dem bildschrim.
-- damit das prüfverfahren erfolgreich sein kann muss ich jedoch die ersten 4 prim
-- zahlen ausschliessen und sie per if funktion zurückgeben.
for k in 1..2**16 loop
prim := prim + 1
if prim mod 2 /=0 then
if prim mod 3 /= 0 then
if prim mod 5 /= 0 then
if prim mod 7 /= 0 then
return 0;
end Berechne_Primzahl;