def isprime(num): if num<=3: return True for i in range(2,int(num**0.5)+1): if not num%i: return False return True def find(odd, visited, choose, evens): for j,even in enumerate(evens): # 扫描每个待被匹配的even if isprime(odd+even) and not visited[j]: visited[j] = True if choose[j]==0 or find(choose[j],visited,choose,evens): # 如果第j位even还没被人选 或者 选它的那个odd还有别的even可以选择 那就把这位even让给当前的odd choose[j] = odd return True # 说明匹配 return False while True: try: n = int(input()) nums = list(map(int,input().split(' '))) count = 0 # 奇数+奇数 = 偶,偶+偶=奇数,都不能成为素数。只能奇数+偶数的组合才有可能 odds,evens = [],[] # 把数分为奇数和偶数 for num in nums: if num%2: odds.append(num) else: evens.append(num) choose = [0]*len(evens) # 装 来匹配这位even的对应的odd先生 for odd in odds: visited = [False]*len(evens) # 每一次要清零(对每个待去匹配的odd来说,每个even都是新鲜的 if find(odd, visited, choose, evens): count += 1 print(count) except: break