题解 | #素数伴侣#

素数伴侣

https://www.nowcoder.com/practice/b9eae162e02f4f928eac37d7699b352e

n=int(input())
num=list(map(int,input().split()))
def isprime(a,b):#判断相加是否为素数
    sum=a+b
    if sum<2:
        return False
    elif sum<4:
        return True
    elif sum%2==0 or sum%3==0:
        return False
    i=5
    while i*i<sum:
        if sum%i==0 or sum%(i+2)==0:
            return False
        i+=6
    return True
#获得二维矩阵a[i][j],i,j代表第几个数,对应矩阵内元素全为1或0,1表示相加为素数
a=[]
for i in num:
    b=[]
    for j in num:
        if isprime(i,j):
            b.append(1)
        else:
            b.append(0)
    a.append(b)
#第i个数是否能找到对应parter相加为素数
def find(a,i,parter,seen):
    for j in range(len(a)):
            if a[i][j] and not seen[j]:
                seen[j]=True #是否访问过该数,防止重复访问陷入循环
                if parter[j]==-1 or find(a,parter[j],parter,seen):
                    parter[j]=i
                    parter[i]=j
                    return True
    return False

parter=[-1]*len(a)
count=0
for i in range(len(a)):
    seen=[False]*len(a)
    if parter[i]==-1:
        if find(a,i,parter,seen):
            count+=1
print(count)


                    
            
            

全部评论

相关推荐

也许是天气_:实习这块全是假大空像AI生成的,没有实际内容。要体现出难点、亮点、解决问题的过程
点赞 评论 收藏
分享
08-12 13:37
南华大学 Java
看到了小红书顶尖实习生的薪资爆料,小红书你给这么多的吗
也不容易的大老虎很爱...:博士那个略有耳闻,进面的都是5篇a起步
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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