• 算法练习--素数环


    输入一个数字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;
    }




  • 相关阅读:
    ubuntu让脚本在后台运行
    Ubuntu nohup 使用
    ubuntu添加开机启动程序
    ubuntuc查找正在运行的进程
    Python搭建的网站突然缺少包报错
    很杂
    logging模块浅记
    在CentOS 7上安装&配置PostgreSQL 12
    云服务器的centos7桌面版需要安装的应用
    云服务器配置桌面版(windows连接)
  • 原文地址:https://www.cnblogs.com/wzzkaifa/p/6846963.html
Copyright © 2020-2023  润新知