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
Forenbaum
^ Forenbaum
Status Hochschulmathe
  Status Uni-Analysis
    Status Reelle Analysis
    Status UKomplx
    Status Uni-Kompl. Analysis
    Status Differentialgl.
    Status Maß/Integrat-Theorie
    Status Funktionalanalysis
    Status Transformationen
    Status UAnaSon
  Status Uni-Lin. Algebra
    Status Abbildungen
    Status ULinAGS
    Status Matrizen
    Status Determinanten
    Status Eigenwerte
    Status Skalarprodukte
    Status Moduln/Vektorraum
    Status Sonstiges
  Status Algebra+Zahlentheo.
    Status Algebra
    Status Zahlentheorie
  Status Diskrete Mathematik
    Status Diskrete Optimierung
    Status Graphentheorie
    Status Operations Research
    Status Relationen
  Status Fachdidaktik
  Status Finanz+Versicherung
    Status Uni-Finanzmathematik
    Status Uni-Versicherungsmat
  Status Logik+Mengenlehre
    Status Logik
    Status Mengenlehre
  Status Numerik
    Status Lin. Gleich.-systeme
    Status Nichtlineare Gleich.
    Status Interpol.+Approx.
    Status Integr.+Differenz.
    Status Eigenwertprobleme
    Status DGL
  Status Uni-Stochastik
    Status Kombinatorik
    Status math. Statistik
    Status Statistik (Anwend.)
    Status stoch. Analysis
    Status stoch. Prozesse
    Status Wahrscheinlichkeitstheorie
  Status Topologie+Geometrie
  Status Uni-Sonstiges

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 Impressum
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
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.unimatheforum.de
[ Startseite | Forum | Wissen | Kurse | Mitglieder | Team | Impressum ]