题解 | 素数伴侣

def  is_prime(num):
    if num <= 3:
        return num > 1
    for i in range(2, int(num ** 0.5) + 1):
        if num%i == 0:
            return False
    return True


def get_match(i):
    for j in range(n):
        if (array[i][j]==True) and (visit[j]==False):
            visit[j] = True
            if matchedNum[j] == -1 or get_match(matchedNum[j]):
                matchedNum[j] = i
                return True
    return False


while True:
    try:
        num = int(input())
        lst = list(map(int, input().split()))
        odds, evens = [], []
        for i in lst:
            if i % 2 == 0:
                evens.append(i)
            else:
                odds.append(i)
    
        m, n = len(odds), len(evens)

        array = [[-1 for i in range(n)] for j in range(m)]
        count = 0
        for i,x in enumerate(odds):
            for j,y in enumerate(evens):
                array[i][j] = is_prime(x+y)

        matchedNum = [-1 for i in range(n)]

        for i in range(m):
            visit = [False for i in range(n)]
            if get_match(i):
                count += 1
        print(count)

    except:
        break

全部评论

相关推荐

CARLJOSEPH...:宝宝你戾气太大了
点赞 评论 收藏
分享
酷酷我灵儿帅:这去不去和线不线下面说实话没啥关系
点赞 评论 收藏
分享
05-20 13:59
门头沟学院 Java
米黑子米黑子:你这个成绩不争取下保研?
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-07 11:30
仁者伍敌:kpi都懒得刷了属于是
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务