素数环

来源:互联网 发布:lol国服数据 编辑:程序博客网 时间:2024/05/29 12:32

题目:

将从1到n这n个整数围成一个圆环,若其中任意2个相邻的数字相加,结果均为素数,那么这个环就成为素数环。要求输出素数环。

输入

6

输出

143256165234

源代码:

public class SuShuHuan {    static int N;    //判断是否为素数    public boolean is_ss(int a,int b)    {        int c=a+b;        if(c==1)            return false;        for(int i=2;i*i<=c;i++)        {            if(c%i==0)  //不是素数                return false;        }        return true;    }    public void hs(int a[],int gs)    {        if(gs==N)  //深搜了N次        {            if(is_ss(a[0],a[N-1]))  //最后一个数与第一个数相加为素数                for(int i=0;i<N;i++)                    System.out.print(a[i]);  //输出            System.out.println();            return;        }        int tmp;        for(int i=gs;i<N;i++)  //为防止重复,从后一个数开始        {            tmp=a[i];a[i]=a[gs];a[gs]=tmp;  //深搜交换两数            if(is_ss(a[gs],a[gs-1]))  //如果相加为素数            {                hs(a,gs+1);  //深搜            }            tmp=a[i];a[i]=a[gs];a[gs]=tmp;   //回溯        }    }    public static void main(String[] args) {        // TODO 自动生成的方法存根        Scanner cin=new Scanner(System.in);        N=cin.nextInt();        int[] a=new int[N];        for(int i=0;i<N;i++)            a[i]=i+1;    //将N个数放入数组中        SuShuHuan ssh=new SuShuHuan();        ssh.hs(a,1);  //从a[1]开始    }}
0 0
原创粉丝点击