matheraum.de
Raum für Mathematik
Offene Informations- und Nachhilfegemeinschaft

Für Schüler, Studenten, Lehrer, Mathematik-Interessierte.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 Impressum
Forenbaum
^ Forenbaum
Status Mathe
  Status Schulmathe
    Status Primarstufe
    Status Mathe Klassen 5-7
    Status Mathe Klassen 8-10
    Status Oberstufenmathe
    Status Mathe-Wettbewerbe
    Status Sonstiges
  Status Hochschulmathe
    Status Uni-Analysis
    Status Uni-Lin. Algebra
    Status Algebra+Zahlentheo.
    Status Diskrete Mathematik
    Status Fachdidaktik
    Status Finanz+Versicherung
    Status Logik+Mengenlehre
    Status Numerik
    Status Uni-Stochastik
    Status Topologie+Geometrie
    Status Uni-Sonstiges
  Status Mathe-Vorkurse
    Status Organisatorisches
    Status Schule
    Status Universität
  Status Mathe-Software
    Status Derive
    Status DynaGeo
    Status FunkyPlot
    Status GeoGebra
    Status LaTeX
    Status Maple
    Status MathCad
    Status Mathematica
    Status Matlab
    Status Maxima
    Status MuPad
    Status Taschenrechner

Gezeigt werden alle Foren bis zur Tiefe 2

Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Dt. Schulen im Ausland: Mathe-Seiten:Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
StartseiteMatheForenMaximaProgramm in Maxima schreiben
Foren für weitere Studienfächer findest Du auf www.vorhilfe.de z.B. Astronomie • Medizin • Elektrotechnik • Maschinenbau • Bauingenieurwesen • Jura • Psychologie • Geowissenschaften
Forum "Maxima" - Programm in Maxima schreiben
Programm in Maxima schreiben < Maxima < Mathe-Software < Mathe < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Maxima"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

Programm in Maxima schreiben: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 14:05 Sa 23.05.2020
Autor: kuyaykim

Aufgabe
(a) Schreiben Sie eine Funktion  p r i m z a h l i
n f o  zu folgendem Flussdiagramm; dabei soll x
eine nicht-negative ganze Zahl sein dürfen:
[imp]
(b) Überprüfen Sie, ob Ihre Befehlsumgebung
aus (a) auch dann "richtig" reagiert, wenn für x
die Zahl 0 oder 1 eingesetzt wird;
falls in diesem Fall eine Fehlermeldung
erscheint, finden Sie heraus, woran das liegt.

(c) Formulieren Sie nun eine
Mehrfach-Verzweigung, um zusätzlich die Fälle
x=0 und x=1 korrekt zu behandeln.
Die Grundstruktur für eine solche
Mehrfach-Verzweigung lautet:

if  BEDINGUNG1 then AUSDRUCK1
elseif  BEDINGUNG2  then
AUSDRUCK2
elseif  BEDINGUNG3  then
AUSDRUCK3
...
else  AUSDRUCKn

Hallo!
Ich komme mit dieser Frage nicht weiter.
Ich habe es so geschrieben, aber Maxima erkennt keine Primzahl

prim(x):=block(
if (integerp(x) and x>0) then
    (if integerp(primep(x)) then sconcat(x, " ist eine Primzahl")
     else sconcat(x," ist keine Primzahl"))    
else return(" Als Argument muss eine natürliche Zahl eingegeben werden.")    
)$

Wenn ich es wie folgt teste:

prim(1);
prim(2);
prim(3);
prim(4);
prim(-1);
prim(5);
prim(0);

gibt Maxima das raus:

"1 ist keine Primzahl"
"2 ist keine Primzahl"
"3 ist keine Primzahl"
"4 ist keine Primzahl"
" Als Argument muss eine natürliche Zahl eingegeben werden."
"5 ist keine Primzahl"
" Als Argument muss eine natürliche Zahl eingegeben werden."

Was habe ich da falsch gemacht?
Wie muss der Befehl sonst heißen?
Auch die 0 und die 1 muss erkannt werden.

Was ist da falsch?

Ich danke euch schonmal für eure Hilfe.
LG
Nicole
Ich habe diese Frage auch in folgenden Foren auf anderen Internetseiten gestellt:
[https://matheplanet.com/default3.html?call=viewtopic.php?topic=235877&ref=https%3A%2F%2Fwww.google.com%2F]

Dateianhänge:
Anhang Nr. 1 (Typ: png) [nicht öffentlich]
        
Bezug
Programm in Maxima schreiben: Antwort
Status: (Antwort) fertig Status 
Datum: 15:09 Sa 23.05.2020
Autor: HJKweseleit

Du hast nichts falsch, sondern eigentlich gar nichts gemacht.
Maxima weiß eher, ob heute schönes Wetter ist, als dass es weiß, was eine Primzahl ist. Das sollst du doch gerade programmieren!

Wie geht das?

Bei 0 und 1 gibst du "ist keine PZ" aus und verlässt das Programm (Nein, nicht "muss eine nat. Z. eingegeben werden", 0 ist ausdrücklich erlaubt).

Jetzt setzt du t=2 (das ist ein möglicher Teiler)
Solange (t<x) und (x mod t [mm] \ne [/mm] 0) wiederhole t:=t+1
falls t=x schreibe "PZ" sonst "keine PZ".

Erklärung:
x mod t ist eine Funktion aus der Computersprache Pascal. (weiteres für Maxima s.u.) Sie gibt den Rest an, der beim Teilen von x durch t entsteht. 20 mod 7 ist 6, weil 20:7=2 Rest 6 ist. 20 mod 5 ist 0, weil 20:5=4 Rest 0 ist. Wenn also 0 herauskommt, ist x durch t teilbar, und du hast einen Teiler gefunden, und x ist keine PZ. Wenn nicht, erhöhst du den Teiler um 1 und probierst es weiter, bis es klappt.


Spätestens bei t=x klappt es natürlich, und du müsstest nun nur noch nachfragen, ob t bis x gelaufen ist oder vorher schon einen Teiler gefunden hat. Wenn t=x der erste Teiler ist, gibt es außer 1 keinen weiteren, und du hast eine PZ.

Falls du die mod-Funktion nicht findest: Sie kann auch "remainder" oder "reminder" heißen. Falls es so etwas in Maxima auch nicht gibt, kannst du dich mit einer Ganzzahldivision behelfen. Die heißt in Pascal div und lässt den Rest weg: 20 div 7 ist 2, 20 div 5 ist 4. Dann gibt x-(x div t)*t den Rest an: 20-(20 div 7)*7 =20-2*7=6 bzw. 20-(20 div 5)*5=20-4*5=0.

Falls es auch keine Ganzzahldivision gibt, kann ich dir nicht weiterhelfen.

Das obige Programm ist übrigens sehr ineffektiv, weil man bei einer PZ von t=2 bis t=x alles durchprobiert, obwohl man schon bei der Wurzel von x aufhören kann. Aber das ist eine andere Geschichte...



Bezug
        
Bezug
Programm in Maxima schreiben: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 20:59 Sa 23.05.2020
Autor: kuyaykim

Ich habe es jetzt ein wenig geändert und damit klappt es.

prim(x):=block(
if (integerp(x) and x>=0) then
    (if (primep(x)) then sconcat(x, " ist eine Primzahl")
     else sconcat(x," ist keine Primzahl"))    
else return(" Als Argument muss eine ganze Zahl eingegeben werden.")    
)$

prim(2);
prim(3);
prim(4);
prim(-1);
prim(5);

"2 ist eine Primzahl"
"3 ist eine Primzahl"
"4 ist keine Primzahl"
" Als Argument muss eine ganze Zahl eingegeben werden."
"5 ist eine Primzahl"

Das ich Maxima dazu nehme ist eine Vorgabe. Da kann ich nichts dran ändern.

Bezug
                
Bezug
Programm in Maxima schreiben: Funktion "primep"
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 14:44 So 24.05.2020
Autor: Al-Chwarizmi

Damit hast du natürlich, was die Primzahleigenschaft betrifft, eigentlich gar nichts selber programmiert, sondern du stützt dich einfach auf eine in Maxima offenbar eingebaute Funktion "primep" , welche mittels einer äußerst raffinierten zahlentheoretischen Methode mit großer Sicherheit über die Primzahleigenschaft entscheidet - und für alle gängigen (nicht zu riesengroßen) Zahlenwerte auch das richtige Ergebnis liefert.

Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Maxima"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
www.matheraum.de
[ Startseite | Forum | Wissen | Kurse | Mitglieder | Team | Impressum ]