在python中查找整数列表的最低公倍数,而不使用gcd



输入->

a=[16,21, 56, 40] 
**Code I wrote**
def find_primes(a):
num_factors=[] 
for num in a:
# print('1',num)
list_of_factors=[]
i=2
while num>1:
#print('2',num)
if num%i==0:
list_of_factors.append(i)
# print('3',list_of_factors)
num=num/i
# print('4',num)
i=i-1

i+=1 
num_factors.append(list_of_factors)  
d = {}
a_list = []
for i in num_factors:
for j in i:
d[j] = d.get(j, 0) + 1
dictionary_copy = d.copy()
a_list.append(dictionary_copy)  
print(a_list)
return num_factors

find_primes(a)

这是我得到的输出:

[{2: 10, 3: 1, 7: 2, 5: 1}]
[[2, 2, 2, 2], [3, 7], [2, 2, 2, 7], [2, 2, 2, 5]]

这是我的问题(对我的代码输出有疑问要澄清(:

要明白,既然它是一本字典,那么密钥的值就会累积起来。

我想得到每个列表中唯一整数的计数。例如。[{2:4},{3:1,7:1},{2:3,7:1}],而不是上面代码的输出中给出的内容。

之后,我想获得每个整数的最大出现次数,以计算LCM。2^4*3*7*5

告知我们如何改进代码不寻找已完成的解决方案。只是建议。感谢您的帮助。

对于这个问题,我们不允许使用gcd或任何其他数学库来解决它

这似乎是一个家庭作业问题,所以我不会给你一个完整的解决方案。

要获得列表中不同项目的计数,一个有效的解决方案是将其转换为一个集合,然后找到长度:

mylist = [3,3,3,4,5]
print(set(mylist))
#{3, 4, 5}
print(len(set(mylist)))
#3  

biglist = [[2, 2, 2, 2], [3, 7], [2, 2, 2, 7], [2, 2, 2, 5]]
for sublist in biglist:
print(max(sublist))
#2
#7
#7
#5

最新更新