如何在列表中找到质数最大的数字?

时间:2019-05-25 06:48:11

标签: python python-3.x

我想编写一个程序,该程序接收10个条目,最后应在输出中打印出质数最大的数字及其质数。而且,如果某些输入具有相同的条件,则程序将输出最大的输入。

我编写的代码执行了除最终条件以外的所有条件。 当两个数字具有相同的素数数时(当我希望更大的数字作为输出时),我应该如何编写代码? 例如678和84都有3个素数。我的代码输出为84,而我希望输出为678(更大的数字)

1 个答案:

答案 0 :(得分:2)

您想在列表中找到具有最多素数的数字

您可以尝试以下代码。 :)

此代码在给定列表(例如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)