不会封我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;
}
多多指点……


