HJ28 素数伴侣

该博客介绍了素数伴侣的概念,即两个正整数之和为素数的情况,并讨论了如何在给定的正整数集合中找出形成最多素数伴侣对的解决方案。这个问题与二分图的最大匹配问题相关,对于输入的偶数个正整数,目标是找到最大的素数伴侣对数量。示例展示了如何处理不同的输入数据,得出最佳方案的素数伴侣对数。文章探讨了如何通过算法解决此类问题在通信加密领域的潜在应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目描述
若两个正整数的和为素数,则这两个正整数称之为“素数伴侣”,如2和5、6和13,它们能应用于通信加密。现在密码学会请你设计一个程序,从已有的N(N为偶数)个正整数中挑选出若干对组成“素数伴侣”,挑选方案多种多样,例如有4个正整数:2,5,6,13,如果将5和6分为一组中只能得到一组“素数伴侣”,而将2和5、6和13编组将得到两组“素数伴侣”,能组成“素数伴侣”最多的方案称为“最佳方案”,当然密码学会希望你寻找出“最佳方案”。

输入:

有一个正偶数N(N≤100),表示待挑选的自然数的个数。后面给出具体的数字,范围为[2,30000]。

输出:

输出一个整数K,表示你求得的“最佳方案”组成“素数伴侣”的对数。

输入描述:
输入说明
1 输入一个正偶数n
2 输入n个整数
注意:数据可能有多组

输出描述:
求得的“最佳方案”组成“素数伴侣”的对数。

示例1
输入:
4
2 5 6 13
2
3 6

输出:
2
0

两个数相加是素数看作一条边,求素数伴侣的最大对数,就是求二分图的最大匹配。
下面代码因为没有把点拆分成奇数和偶数两部分,两部分的点都是N,所以最后方案数需要除2。

#include<bits/stdc++.h>
using namespace std;
int n;
int a[120], p[120];
bool v[120];
int m[120][120];

bool prime(int x){
   
    if(x % 2 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值