题解 | 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 加上素数判断

