题目描述

若两个正整数的和为素数,则这两个正整数称之为“素数伴侣”,如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

实现

# 判断是否为素数
def is_prime(number):for i in range(2, number):if number % i == 0:return Falsereturn True# 素数一定为奇数,将number分成奇偶两个列表
def odd_even():odd = []even = []for i in numbers:if i % 2 == 1:odd.append(int(i))else:even.append(int(i))return odd, even# 判断是否可以配对,记录为字典{odd(index:[even[index]])}
def group_prime():primes = {}for i in range(len(odd)):primes[i] = []for index_i, i in enumerate(odd):for index_j, j in enumerate(even):if is_prime(i + j):primes[index_i].append(index_j)else:primes[index_i].append(-1)return primes# 匹配最佳配对方案
def mate(odd_key):for index, i in enumerate(even):if primes[odd_key][index] != -1 and used[index] == 0:used[index] = 1if companion[index] == -1 or mate(companion[index]) != 0:  # 已配对的伴侣是可以重新选择伴侣companion[index] = odd_keyreturn 1return 0while 1:try:n = int(input())numbers = list(map(int, input().strip().split()))odd, even = odd_even()primes = group_prime()new = []companion= [-1 for i in range(len(even))]  # 已配对的素数伴侣count = 0for k, v in primes.items():used = [0 for i in range(len(even))]  # 是否已被配对if mate(k):count += 1print(count)except:break

python:素数伴侣相关推荐

  1. python任意输入一个正整数、判断该数是否为素数_Python编程判断一个正整数是否为素数的方法,python素数...

    Python编程判断一个正整数是否为素数的方法,python素数 本文实例讲述了Python编程判断一个正整数是否为素数的方法.分享给大家供大家参考,具体如下: import string impor ...

  2. 华为机试HJ28:素数伴侣

    作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 题目描述: 若两个正整数的和为素数,则这两个正整数称之为"素数伴侣",如2和 ...

  3. 华为机试 素数伴侣 匹配匈牙利算法

    题目描述 题目描述 若两个正整数的和为素数,则这两个正整数称之为"素数伴侣",如2和5.6和13,它们能应用于通信加密.现在密码学会请你设计一个程序,从已有的N(N为偶数)个正整数 ...

  4. 华为OJ(素数伴侣)

    描述 题目描述若两个正整数的和为素数,则这两个正整数称之为"素数伴侣",如2和5.6和13,它们能应用于通信加密.现在密码学会请你设计一个程序,从已有的N(N为偶数)个正整数中挑选 ...

  5. 匈牙利算法编程c语言,华为oj之素数伴侣---匈牙利算法

    版权声明:本文为博主原创文章,未经博主允许不得转载. 题目描述 若两个正整数的和为素数,则这两个正整数称之为"素数伴侣",如2和5.6和13,它们能应用于通信加密.现在密码学会请你 ...

  6. 华为笔试题-素数伴侣

    刷到这个题目的时候想起了国庆项目的人群映射,基本类似,在这里再记录一下. 前言 若两个正整数的和为素数,则这两个正整数称之为"素数伴侣",如2和5.6和13,它们能应用于通信加密. ...

  7. HJ28 素数伴侣【python3】

    题目描述 若两个正整数的和为素数,则这两个正整数称之为"素数伴侣",如2和5.6和13,它们能应用于通信加密.现在密码学会请你设计一个程序,从已有的 N ( N 为偶数)个正整数中 ...

  8. 素数伴侣问题—二部图最大匹配问题

    题目描述 若两个正整数的和为素数,则这两个正整数称之为"素数伴侣",如2和5.6和13,它们能应用于通信加密.现在密码学会请你设计一个程序, 从已有的N(N为偶数)个正整数中挑选出 ...

  9. python素数(质数)分解

    python素数(质数)分解 python小白,大佬请忽略- 素数(质数):除了1和和它本身,没有其他的因数的数. 输入整数n,进行素数分解. #素数只能被1和它本身整除,不能再被其它数整除,能被2整 ...

最新文章

  1. (C++)字符数组的四种输入输出方式
  2. java 手机音频播放,用Java实现音频播放
  3. 容量和速度是选购闪存盘的关键
  4. Apache - No space left on device / Failed to create proxy Mutex
  5. visual studio code typescript 防止 import statement 断行
  6. oracle删除数据库中的所有数据的拼接语句
  7. ios应用程序开发框架
  8. 正则表达式30分钟入门教程(转载)
  9. OpenWrt常用命令总结
  10. 人生每一件事都是为自己而做
  11. 几款引擎比较:BigWorld,Unreal,CryEngine等
  12. java 生成拼音_java 根据汉字生成拼音全拼或拼音首字母
  13. html页面调节图片大小,怎么用css设置图片大小?
  14. ask调制流程图_利用卷积神经网络的自动调制分类算法
  15. 进击的UI----------------(常见快捷键的使用)
  16. HTML编辑器选择什么,HTML编辑器有哪些?3款常用的编辑器推荐
  17. 关于项目部署在Tomcat中使用软连接之坑
  18. android文件管理器项目,GitHub - yangsmith/FileExplorer: android file explorer android文件管理器...
  19. 面向接口编程简单比较
  20. 袁斌:极空间家庭私有云,您的数字资产大管家

热门文章

  1. 手机排行榜2022前十名最新
  2. html5怎么制作app页面,玩转HTML5移动APP页面(动效篇)
  3. 比起尴尬的“免签”政策,马来西亚的美食美景要靠谱多了
  4. mysql ratio_to_report_ratio_to_report 分析函数求占比
  5. linux unix编程思想,Unix网络编程思想
  6. 云电脑来了,云办公有何不可
  7. matlab如何实现横轴坐标的放缩
  8. Java项目:SSH婚纱摄影工作室网站平台
  9. Inventor2018专业版软件安装激活教程
  10. 5分钟带你了解会员营销!