как представить кратность простого множителя при факторизации в python

#python #python-requests #integer #format #factorization

Вопрос:

Я кодирую эту функцию факторизацией(n)… как показано ниже

 def factorization(n):
    factor=[]
    for i in range(2,n 1):
        while n % i == 0:
            n = n/i
            factor.append(i)
        print(factor)
 

и если вы напишете эту
факторизацию(180) = [2,2,3,3,5]
но я хочу распечатать этот формат:
180 = 2^2 х 3^2 х 5

но я не могу этого сделать. я думаю, что «подсчет списков» полезен, но я не знаю, как правильно использовать количество каждого фактора и форматировать его.

Ответ №1:

Использование ванильного python и некоторого форматирования:

 def factorization(n):
    factor = []
    for i in range(2, n   1):
        while n % i == 0:
            n = n / i
            factor.append(i)
    print('*'.join(f'{n}'   (f'^{factor.count(n)}' if factor.count(n) > 1 else '') for n in set(factor)))


factorization(180)
 

С принтами:

 2^2*3^2*5
 

Ответ №2:

Вы можете использовать коллекции.Счетчик: https://docs.python.org/3/library/collections.html#collections.Счетчик

 from collections import Counter

counts = Counter(factorization(180))
counts[2]
counts[3]