Rationale Zahlen potentieren, oder Exponenten in der Primfaktorzerlegung bestimmen



  • Hallo,

    ich möchte eine Funktion implementieren, die zwei rationale Zahlen potenziert. Der Rückgabewert soll eine rationale Zahl mal - wenn vorhanden - irrationale Primzahlpotenzen sein. Ein paar Beispiele:
    \operatorname{Pow}(2, \frac{1}{2}) = 2^\frac{1}{2}
    \operatorname{Pow}(2^6 \cdot 3^4 \cdot 5^2 \cdot 7, \frac{1}{3}) = 12 \cdot 3^\frac{1}{3} \cdot 5^\frac{2}{3} \cdot 7^\frac{1}{3}
    \operatorname{Pow}((\frac{1}{2})^2\cdot\frac{3}{7}, -\frac{1}{2}) = 2\cdot(\frac{1}{3})^\frac{1}{2}\cdot7^\frac{1}{2}
    Die Argumente liegen nicht faktorisiert vor, sondern in der gekürzten Form ±pq\pm\frac{p}{q} mit pqp \perp q.

    Was mir vorschwebte, war, sowohl den Zähler als auch den Nenner zu faktorisieren und die Exponenten der Primfaktoren mit dem Exponenten der Operation zu multiplizieren. Danach kann ich alle Exponenten, die größer-gleich 1 sind, vereinfachen. Dieses Prozedere ist allerdings, wenn mich nicht alles täuscht, sehr aufwendig.
    Gibt es für diese Operation einen effizienten Algorithmus?

    LG



  • Ich glaube ehrlich gesagt nicht, dass es einen effizienten Algorithmus gibt, wenn nicht P = PN. Für Polynome statt ganzen Zahlen gäbe es einen.


Anmelden zum Antworten