题解 | kotori和素因子
import sys n = int(input()) a = list(map(int, input().split())) yinzi = [] def isprime(v): for i in range(2, v): if v % i == 0: return False return True for i in range(n): v = a[i] br = [] for j in range(1, v + 1): if v%j == 0 and j != 1 and isprime(j): br.append(j) yinzi.append(br) res = 1000*2000 array = [] s = [] def dfs(idx): global res, s br = yinzi[idx] for v in br: if v in s: continue# used s.append(v) # print(s) if len(s) == n: if res > sum(s): res = sum(s) # print(s) s.remove(v) continue dfs(idx + 1) s.remove(v) dfs(0) if res == 1000*2000: res = -1 print(res)
dfs 加上素数判断