Fehler: final value in for loop must be numeric or character
Eric_H
Wenig Aktiv Dabei seit: 02.04.2020 Mitteilungen: 59
Themenstart: 2020-10-22
Hallo Zusammen,
ich habe die Aufgabe mit Maple die Anzahl der Primzahlzwillinge (p,p+2) bis p+2 <= x auszugeben.
Meine Lösung dafür sieht wie folgt aus.
Maple
primetwinsto :=proc(r)local i,anzahl;
anzahl := 0;
for i from1to r doif isprime(i-2)and isprime(i)then
anzahl:= anzahl +1;
end if;
end do;
return(anzahl);
endproc:
Nun Soll das Ergebnis dieser Prozedur zwischen 1 und 1000 geplottet werden.
Dafür verwende ich folgendes Kommando:
plot(primetwinsto(x), x = 1 .. 1000)
Danach erhalte ich die Fehlermeldung:
Error, (in primetwinsto) final value in for loop must be numeric or character
ThomasRichard
Senior Dabei seit: 08.04.2010 Mitteilungen: 424
Herkunft: Aachen
Beitrag No.1, eingetragen 2020-10-22
Hallo Eric,
das ist ein häufiger Anfänger-Fehler: der plot-Aufruf übergibt ein symbolisches x an die Prozedur, womit die Schleife nicht ausgeführt werden kann - weil eben keine Obergrenze bekannt ist. Genau das besagt die Meldung.
Abhilfe: die Auswertung des Arguments primetwinsto(x) verzögern durch sog. "unevaluation quotes":
Maple
plot('primetwinsto(x)', x = 1 .. 1000)
oder (m.E. weniger elegant): nur den Prozedurnamen und den Bereich übergeben, also ohne den Variablennamen: