Primfaktorzerlegung mithilfe des Listenverständnisses in PythonPython

Python-Programme
Guest
 Primfaktorzerlegung mithilfe des Listenverständnisses in Python

Post by Guest »

Wie schreibe ich eine Funktion, die eine Liste von Tupeln wie (ci, ki) für n zurückgibt, so dass n = c1k1 c2k2 ... ci ki ist eine Primzahl?
Zum Beispiel: 12600 = 23 · 32 · 52 · 71
Gewünschte Ausgabe: [(2, 3), (3, 2), (5, 2), (7, 1)]< /code>
Ich weiß, wie man das mit while macht, aber ist es möglich, es mit Listenverständnis zu machen? Effizienz ist bei dieser Aufgabe nicht erforderlich.

Code: Select all

# naive function
def is_prime(n):
return n > 1 and all(n % i != 0 for i in range(2, n))

# while version
def factorization_while(n):
res = []
for i in range(1, n + 1):
if is_prime(i):
j = 0
while n % i == 0:
n = n // i
j += 1
if j != 0:
res.append((i, j))
return res

# list comprehension version
def factorization(n):
return [
(i, j) for i in range(1, n + 1) if is_prime(i) \
and n % i == 0 ... # add smth
]

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post