zoukankan      html  css  js  c++  java
  • 算法练习--素数环

    输入一个数字n,输出[1,N]内的全部组合,满足a[i]+a[i+1]为素数。当中i∈[0,i-1]

    比如输入:6

    输出:1,4,3,2,5,6


    实现:



    var MAX = 10;
    
    ////setup prime array
    var primeArr = new Array();
    
    var Ann = function a(arr){
    if(arr.length <= 1){return arr;}
    
    var rr = new Array();
    for(var i = 0; i<arr.length;i++){
    
    //get a copy
    var ar = new Array();
    for(var j = 0; j < arr.length;j++){ar[j] = arr[j];}
    
    var current = ar[i];
    ar.splice(i,1);
    
    
    var childRet = a(ar);
    
    
    for(var k = 0 ;k < childRet.length;k++){
    
    var str = (current + "," + childRet[k]);
    if(str.length < 2 || isPrimeCycle(str)){
    rr.push(str);
    }
    
    }
    
    }
    
    
    return rr;
    }
    
    ////setup prime array
    for(var i = 1;i <= MAX; i++){
    for(var j = 1;j <= MAX; j++){
    if(i!=j && isPrime(i+j)){primeArr[i+j] = 1;}
    }
    }
    
    ////init input array
    var a = new Array();
    for(var i = 0;i < MAX; i++){
    a.push(i+1);
    }
    
    ////run
    var ret = Ann(a);
    
    ////print result
    for(var i = 0;i < ret.length;i++){
    outRet(ret[i]);
    }
    
    var count = 0;
    function outRet(r) {
    count = count + 1;
    console.log("==============" + "," + count.toString());
    console.log(r);
    }
    
    
    function isPrimeCycle(str){
    var arr = str.split(',');
    for(var i = 0;i < arr.length-1; i++){
    
    if(primeArr[parseInt(arr[i])+parseInt(arr[i+1])] != 1){return false;}
    
    }
    
    return true;
    }
    
    function isPrime(n){
    for(var i = 2; i < n; i++){if(n%i == 0){return false;}}
    return true;
    }




  • 相关阅读:
    HTTP断点续传 规格严格
    Java Shutdown 规格严格
    linux 命令源码 规格严格
    JTable调整列宽 规格严格
    linux 多CPU 规格严格
    Hello can not find git path 规格严格
    Kill 规格严格
    拜拜牛人 规格严格
    Swing 规格严格
    Debugging hangs in JVM (on AIX but methodology applicable to other platforms) 规格严格
  • 原文地址:https://www.cnblogs.com/wzzkaifa/p/6846963.html
Copyright © 2011-2022 走看看