不会封我ID吧
[此贴子已经被作者于2007-8-1 17:17:31编辑过]
to aipb2007:
我也搞了一个,就是效率不怎么高。
呵呵!
//将1--8排成一排,使相邻两数和为素数,且首尾两数的和也为素数
//编程列出所有排列。
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
const N=8;
bool prime(int n)
{
if(n>=2)
{
int flag=1;
int j=2;
while(j<=sqrt(n))
{
if(n%j==0)
{flag=0;
break;}
j++;
}
if(flag)
return true;
else
return false;
}
else
return false;
}
bool sumisprime(int Array[N])
{
if(prime(Array[0]+Array[N-1]))
{
int x(1);
for(int i(0);i<N-1;i++)
if(! prime(Array[i]+Array[i+1]))
x=0;
if(x)
return true;
else
return false;
}
else
return false;
}
void main()
{
int a[N]={1,2,3,4,5,6,7,8};
while(next_permutation(a,a+N))
{
if(sumisprime(a))
{
for(int i(0);i<N;i++)
cout<<a[i]<<" ";
cout<<endl;
}
}
cout<<endl;
}
多多指点……