第一题的,根据楼上大哥的思路写出来的,大家看看有没有问题😑,还有感觉会超时。。。 def t1(ls): dt = [{} for _ in range(len(ls))] haset = set() for i in range(len(ls)): num = ls[i] while num % 2 == 0: dt[i][2] = dt[i].get(2, 0) + 1 num //= 2 haset.add(2) j = 3 while j <= num**0.5: if num % j == 0: dt[i][j] = dt[i].get(j, 0) + 1 num //= j haset.add(j) else: j += 2 if num > 3: dt[i][num] = dt[i].get(num, 0) + 1 haset.add(num) ans = 0 for num in haset: odd, even = 0, 0 for dtt in dt: if dtt.get(num, 0) % 2 == 0: even += 1 else: odd += 1 ans += min(even, odd) return dt, ans if __name__ == '__main__&(688)#39;: print(t1([1002, 98, 14, 68]))