def get_primenum(s): if s < 4: return True # 通过从2到它的平方根之间没有可除尽的数来判断这个数是否为素数。原理:一个数与另一个数能除尽则也能除尽这个数的2倍数。若直接判断从2到这个数之间的数则会耗费大量的时间来计算导致超时。 for i in range(2, int(s ** 0.5) + 1): if s % i == 0: return False return True def find_even(evens, previous_select, final_select, odd): for i, even in enumerate(evens): if get_primenum(even + odd) and previous_select[i] == 0: previous_select[i] = 1 # 判断第i位偶数是否被匹配或者它的匹配奇数是否有其他选择,如果有其他选择,则当前的奇数匹配第i位偶数 if final_select[i] == 0 or find_even( evens, previous_select, final_select, final_select[i] ): final_select[i] = odd return True return False while True: try: N = int(input()) list0 = list(map(int, input().split(" "))) count0 = 0 evens, odds = [], [] for list1 in list0: if list1 % 2 == 0: evens.append(list1) else: odds.append(list1) final_select = [0] * len(evens) for odd in odds: previous_select = [0] * len(evens) if find_even(evens, previous_select, final_select, odd): count0 += 1 print(count0) except: break