我想编写一个程序,该程序接收10个条目,最后应在输出中打印出质数最大的数字及其质数。而且,如果某些输入具有相同的条件,则程序将输出最大的输入。
我编写的代码执行了除最终条件以外的所有条件。 当两个数字具有相同的素数数时(当我希望更大的数字作为输出时),我应该如何编写代码? 例如678和84都有3个素数。我的代码输出为84,而我希望输出为678(更大的数字)
答案 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)