Primzahlenfaktorisierung

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Kash
User
Beiträge: 2
Registriert: Sonntag 27. Oktober 2019, 11:28

Hallo Leute,

ich hab eine kleines Problem mit einer Aufgabe. Die sogenannte Primzahlenfaktorisierung (Auch Primfaktorzerlegung genannt).
Der Nutzer soll eine Int Zahl eingeben. z.B. 60 oder 63

Das Ergebnis bzw. die Ausgabe sollte dann lauten: 60 = 2 * 2 * 3 *5 . oder: 63 = 3 * 3 * 7.
Also die Multiplizierten Zahlen ergeben die eingegebene Zahl (Faktorzahlen immer von niedrig nach hoch)

Könnt ihr mir hier weiterhelfen ich steh da total an.

Vielen Dank!

LG Kash
nezzcarth
User
Beiträge: 1764
Registriert: Samstag 16. April 2011, 12:47

Deine Frage ist zu allgemein und hat so wenig Erfolgsaussicht, da du nicht zeigst, was du bisher gemacht macht hast. Zeig bitte deinen bisherigen Code und erklär etwas konkreter, wobei genau du Schwierigkeiten hast.
Benutzeravatar
__blackjack__
User
Beiträge: 14051
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

😇

Code: Alles auswählen

#!/usr/bin/env python3
from collections import Counter

from sympy.ntheory import factorint


def main():
    while True:
        try:
            number = int(input("Bitte eine ganze Zahl ≥2 eingeben: "))
        except ValueError:
            print("Eine ganze Zahl!")
        else:
            if number >= 2:
                break
            print("Die eingegebene Zahl ist zu klein!")

    print(
        number,
        "=",
        " * ".join(map(str, Counter(factorint(number)).elements())),
    )


if __name__ == "__main__":
    main()
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
nezzcarth
User
Beiträge: 1764
Registriert: Samstag 16. April 2011, 12:47

__blackjack__ hat geschrieben: Sonntag 27. Oktober 2019, 13:39 😇
...
Warum die Mühe?

Code: Alles auswählen

$ read -r x && factor "$x"
63
63: 3 3 7

;)
Benutzeravatar
noisefloor
User
Beiträge: 4192
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

grundsätzlich muss du erst mal die Mathematik verstehen, die dahinter steckt. Was ja nicht das Problem sein sollte, da Primfaktorzerlegung AFAIK Unter- oder Mittelstufenstoff in der Schule ist.

Und das musst du die Mathematik halt in (Python-) Code gießen - fertig. Oder anders: ohne die Mathematik zu verstehen kann du keine Code dazu schreiben.

Gruß, noisefloor
Benutzeravatar
__blackjack__
User
Beiträge: 14051
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@nezzcarth: Ein bisschen mehr Mühe würde ich mir auch bei einem Bash-Skript machen, es war ja eine bestimmte Ausgabe vorgegeben 😉:

Code: Alles auswählen

#!/bin/bash

read -r -p 'Bitte eine ganze Zahl ≥2 eingeben ' number
if [[ number -lt 2 ]]; then
    echo 'Das war keine ganze Zahl ≥2.'
else
    factorResult=($(factor "$number"))
    factors="${factorResult[*]:1}"
    echo "$number = ${factors// / * }"
fi
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Antworten