Здесь вы можете значительно упростить свою логику и повысить производительность, внедрив рекурсивную функцию:
def prime_counter(n, pd, out):
quot = n/pd
if quot==1:
out.append(pd)
return out
if int(quot)==quot:
out.append(pd)
return prime_counter(quot, 2, out)
else:
return prime_counter(n, pd+1, out)
numbers = [12,25,100]
test = {n: prime_counter(n, 2, []) for n in numbers}
Урожайность:
{12: [2, 2, 3], 25: [5, 5], 100: [2, 2, 5, 5]}
Тогда просто определить число с наибольшим числом простых делителей, а также количество простых делителей (вы захотите уточнить, как вы собираетесь разорвать связи):
most_primes = max(test, key=lambda x: len(test[x]))
number_of_primes = len(test[most_primes])
Дает:
100
4