www.vorhilfe.de
Vorhilfe

Kostenlose Kommunikationsplattform für gegenseitige Hilfestellungen.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Vorhilfe
  Status Geisteswiss.
    Status Erdkunde
    Status Geschichte
    Status Jura
    Status Musik/Kunst
    Status Pädagogik
    Status Philosophie
    Status Politik/Wirtschaft
    Status Psychologie
    Status Religion
    Status Sozialwissenschaften
  Status Informatik
    Status Schule
    Status Hochschule
    Status Info-Training
    Status Wettbewerbe
    Status Praxis
    Status Internes IR
  Status Ingenieurwiss.
    Status Bauingenieurwesen
    Status Elektrotechnik
    Status Maschinenbau
    Status Materialwissenschaft
    Status Regelungstechnik
    Status Signaltheorie
    Status Sonstiges
    Status Technik
  Status Mathe
    Status Schulmathe
    Status Hochschulmathe
    Status Mathe-Vorkurse
    Status Mathe-Software
  Status Naturwiss.
    Status Astronomie
    Status Biologie
    Status Chemie
    Status Geowissenschaften
    Status Medizin
    Status Physik
    Status Sport
  Status Sonstiges / Diverses
  Status Sprachen
    Status Deutsch
    Status Englisch
    Status Französisch
    Status Griechisch
    Status Latein
    Status Russisch
    Status Spanisch
    Status Vorkurse
    Status Sonstiges (Sprachen)
  Status Neuerdings
  Status Internes VH
    Status Café VH
    Status Verbesserungen
    Status Benutzerbetreuung
    Status Plenum
    Status Datenbank-Forum
    Status Test-Forum
    Status Fragwürdige Inhalte
    Status VH e.V.

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
Dt. Schulen im Ausland: Mathe-Seiten:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
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.vorhilfe.de