题目要求:
解题思路:
1)首先质数是一个奇数和偶数的和,将整数分为两个数组各自存放奇数和偶数;
2)判断哪些奇数和偶数相加为质数,标记在二维数组中;
3)为了生成最多的搭配方法,这里用匈牙利算法去解(详细解法见代码备注,备注中详细写了如何用匈牙利算法,若还是不懂的见https://blog.youkuaiyun.com/dark_scope/article/details/8880547)
代码如下:
/************************************************************************
* 文件名:Primemate
* 文件功能描述:素数伴侣
* 文件作者名:Mr_han QQ:785937095
* 说明:
* 1、若两个正整数的和为素数,则这两个正整数称之为“素数伴侣”
* 2、从已有的N(N为偶数)个正整数中挑选出若干对组成“素数伴侣”
* 3、能组成“素数伴侣”最多的方案称为“最佳方案”
**************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define LONG long
#define CHAR char
#define N 100
LONG odd[N], even[N]; /*因为质数必然是一个奇数和偶数的和,odd用来存放奇数,even用来存放偶数*/
LONG line[N][N]; /*若odd[i]+even[j]得到质数,则line[i][j]=1,否则为0*/
LONG n, a, b;
/*质数判断*/
LONG Pri