代码实现:
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<stdlib.h>
#include<iostream>
using namespace std;
int vis[100],arr[100];
int isprime(int n){
if(n<=1) return 0;
for(int i=2;i<=sqrt(n);++i){
if(n%i==0) return 0;
}return 1;
}
int ans=1;
void dfs(int num,int lst){
if(lst==num){
if(isprime(arr[lst]+arr[1])){
for(int j=1;j<=num;++j)
cout<<arr[j]<<" \n"[j==num];
ans++;
}
else return;
}
for(int i=2;i<=num;++i){
if(!vis[i]&&isprime(i+arr[lst])){
vis[i]=1; arr[lst+1]=i;
dfs(num,lst+1);
vis[i]=0;
}
}
}
int main(){
int num=2;
while(ans<5){
arr[1]=1; vis[1]=1;
dfs(num++,1);
}return 0;
}