0 Daumen
148 Aufrufe

Aufgabe:

Ziel ist es die Primfaktozerlegung für eine angegebene natürliche Zahl zu bestimmen.

Schreiben Sie eine Blockformel primfaktor, die bei Eingabe einer natürlichen Zahl n die Liste aller Faktoren ausgibt, die in deren Primfaktorzerlegung auftauchen. Genau muss die Blockformel folgendes tun:

1. Als Eingabe erwartet sie eine natürliche Zahl n. Sie überprüft, ob die Eingabe eine natürliche Zahl ist. Wenn nicht, wird eine geeignete Fehlermeldung ausgegeben

2. Sie gibt die Liste aller Faktoren in deren Primfaktorzerlegung aus.

Achtung! Sie dürfen den systemeigenen Befehl zur Primfaktorzerlegung nicht verwenden.


Problem

Sorry aber das Programm stellt mich vor grosse Probleme. Wie kriege ich es hin dass eine Liste mit den Primfaktoren erstellt werden kann?

Ansatz:

primfaktor(n):=block(

if integerp(n)
then  loop( n/primes (2,prev_prime(n))  )
else print("falsche Eingabe"))

Avatar von

1 Antwort

0 Daumen

Falls n eine natürliche Zahl ist:

  1. Intialisiere die Liste faktoren mit der leeren Liste.
  2. Setze die Variable p auf die kleinste Primzahl.
  3. So lange n größer als 1 ist:
    1. So lange n/p eine natürliche Zahl ist:
      1. Füge p zur Liste faktoren hinzu und
      2. setze den Wert von n auf n/p.
    2. Setze p auf die nächstgrößere Primzahl.
  4. Gib die Liste faktoren zurück.

Ansonsten gib eine Fehlermeldung aus.

Sag Bescheid bei welchem Schritt du Schwierigkeiten mit der Umsetzung in Maxima hast.

Avatar von 107 k 🚀

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Mathelounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community