素数环满足三个条件:
1)与已经填写的素数环中的整数不重复
2)与前面相邻的整数之和是个素数
3)最后一个填写到素数环中的整数与第一个填写的整数之和是整数
20以内的素数环:
1 2 3 4
1 4 3 2 5 6
1 2 3 8 5 6 7 4
1 2 3 4 7 6 5 8 9 10
1 2 3 4 7 6 5 12 11 8 9 10
1 2 3 4 7 6 13 10 9 14 5 8 11 12
1 2 3 4 7 6 5 12 11 8 9 14 15 16 13 10
1 2 3 4 7 6 5 8 9 10 13 16 15 14 17 12 11 18
1 2 3 4 7 6 5 8 9 10 13 16 15 14 17 20 11 12 19 18
#include<iostream>
#include<math.h>
using namespace std;
int n=20;
int a[20];
int Prime(int x){
int i,n;
n=(int)sqrt(x);
for(i=2;i<=n;i++)
if(x%i==0)
return 0;
return 1;
}
int Cheak(int k){
int flag=0;
for(int i=0;i<k;i++)
{
if(a[i]==a[k]) //检查是否和已经填写的素数环中的整数重复
return 0;
}
flag=Prime(a[k]+a[k-1]);
if(flag==1&&k==n-1) //与前面相邻的整数之和是个素数
flag=Prime(a[k]+a[0]); //如果是返回1
return flag;
}
v