// hd_acm1016.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
int N = 8;
int number[21];
bool IsPrime(int n)
{
int i;
for(i=2;i<n;i++)
{
if(n%i==0)
return false;
}
return true;
}
int Check(int n)
{
int i;
for(i=n-1;i>=1;i--)
{
if(number[i]==number[n])
return 0;
}
return 1;
}
void Place(int n)
{
if ( n > N )
{
if (IsPrime(number[1]+number[N]) && Check(N))
{
for (int i=1; i<=N; i++)
{
printf("%d%c",number[i],(i<N?' ':'\n'));
}
}
}
else
{
for (int i=2; i<=N; i++)
{
number[n] = i;
if (IsPrime(number[n-1]+number[n]) && Check(n))
{
Place(n+1);
}
}
}
}
int _tmain(int argc, _TCHAR* argv[])
{
number[1]=1;
printf("Case 1:\n");
Place(2);
printf("\n");
system("Pause...");
return 0;
}