Python 如何在列表中找到素数因子最多的数?

Python 如何在列表中找到素数因子最多的数?,python,python-3.x,Python,Python 3.x,我想写一个程序,接收10个条目,最后它应该打印出素数因子数量最多的数字,以及输出中素数因子的数量。而且,如果某些输入具有相同的条件,程序将打印最大的输入 我编写的代码执行除最终条件之外的所有条件。 当我想把较大的数作为输出时,如果两个数具有相同的素数因子,我应该如何编写代码? 例如,678和84都有3个基本因子。我的代码的输出是84,而我希望输出是678,这是一个更大的数字您希望在列表中找到素数因子最多的数字 import numpy as np ''' lst: list data type

我想写一个程序,接收10个条目,最后它应该打印出素数因子数量最多的数字,以及输出中素数因子的数量。而且,如果某些输入具有相同的条件,程序将打印最大的输入

我编写的代码执行除最终条件之外的所有条件。 当我想把较大的数作为输出时,如果两个数具有相同的素数因子,我应该如何编写代码? 例如,678和84都有3个基本因子。我的代码的输出是84,而我希望输出是678,这是一个更大的数字

您希望在列表中找到素数因子最多的数字

import numpy as np

''' lst: list data type. (Some sample list with 10 numbers.) '''
lst = [123,43,54,12,76,84,98,678,543,231]

''' Function which returns numbers of prime factors. '''
def prime_factors(n):
    i = 2
    factors = []
    while i * i <= n:
        if n % i:
            i += 1
        else:
            n //= i
            factors.append(i)
    if n > 1:
        factors.append(n)
    return np.unique(factors)


''' 
num_prime_factors : list data type. (stores numbers of unique prime factors of each element in lst.)
maxx : int data type (max value of num_prime_factors.)
max_indices : list data type (indices of elements of list which have maximum numbers of prime factors.)
values : (largest number in lst which has maximum number of prime factors.)
'''
num_prime_factors = [ len( prime_factors(lst[i]) ) for i in range(len(lst)) ]
maxx = max(num_prime_factors)
max_indices = [i for i, j in enumerate(num_prime_factors) if j == maxx]
values = sorted( [ lst[max_indices[i]] for i in range(len(max_indices)) ] )[-1]

print('Number with greatest number of prime factors: ', values)
print('Largest number of prime factors: ', maxx)

>> ('Number with greatest number of prime factors: ', 678)
>> ('Largest number of prime factors: ', 3)
您可以尝试以下代码:

此代码查找给定列表中的数字,例如lst,其中素数因子的数量最大。它比较所述数,并从素数因子数最多的数中输出最大数

import numpy as np

''' lst: list data type. (Some sample list with 10 numbers.) '''
lst = [123,43,54,12,76,84,98,678,543,231]

''' Function which returns numbers of prime factors. '''
def prime_factors(n):
    i = 2
    factors = []
    while i * i <= n:
        if n % i:
            i += 1
        else:
            n //= i
            factors.append(i)
    if n > 1:
        factors.append(n)
    return np.unique(factors)


''' 
num_prime_factors : list data type. (stores numbers of unique prime factors of each element in lst.)
maxx : int data type (max value of num_prime_factors.)
max_indices : list data type (indices of elements of list which have maximum numbers of prime factors.)
values : (largest number in lst which has maximum number of prime factors.)
'''
num_prime_factors = [ len( prime_factors(lst[i]) ) for i in range(len(lst)) ]
maxx = max(num_prime_factors)
max_indices = [i for i, j in enumerate(num_prime_factors) if j == maxx]
values = sorted( [ lst[max_indices[i]] for i in range(len(max_indices)) ] )[-1]

print('Number with greatest number of prime factors: ', values)
print('Largest number of prime factors: ', maxx)

>> ('Number with greatest number of prime factors: ', 678)
>> ('Largest number of prime factors: ', 3)

提供您的代码,并添加预期的输入和输出,以便更好地理解。将您的代码放入问题欢迎访问SO,请编辑您的问题并将您的代码放入问题中。也来看看。