题目:求四阶的素数幻方。即在一个4X4 的矩阵中,每一个格填 入一个数字,使每一行、每一列和两条对角线上的4 个数字所组成的四位数,均为可逆素数。
#include<iostream>
#include <vector>
using namespace std;
bool is_keni(int a);//判断可逆素数
bool is_sushu(int b);//判断素数
bool is_shaxuan(int c);//筛选函数
bool chaifen(int i,int j,int m,int n);//拆分函数
bool yanzheng(int t);//验证是不是可逆素数
int a[4][4];//存储题目要求的4*4矩阵
vector<int> su1;//存储千位为1的可逆素数
vector<int> su3;//存储千位为3的可逆素数
vector<int> su7;//存储千位为7的可逆素数
vector<int> su9;//存储千位为9的可逆素数
vector<int> s1;//存放可逆素数
vector<int> s2;//存放筛选后的可逆素数
int main(void)
{
for (int i=1001;i!=9999;i+=2)
{
if (is_keni(i))
{
s1.push_back(i);
if (is_shaxuan(i))
{
s2.push_back(i);
}
/*对可逆素数进行分段存*/
if (i>1000&&i<3000)
{
su1.push_back(i);
}
else if (i>3000&&i<7000)
{
su3.push_back(i);
}
else if (i>