everycode icon indicating copy to clipboard operation
everycode copied to clipboard

2014年11月18日

Open nunnly opened this issue 11 years ago • 14 comments
trafficstars

创建一个函数isPrime判断传入的参数是否为素数(质数),返回truefalse

function isPrime(number){

}

//请做以下测试
isPrime(0)
// => false
isPrime(1)
// => false
isPrime(2)
// => true
isPrime(4)
// => false
isPrime(157)
//=> true

nunnly avatar Nov 18 '14 01:11 nunnly

function isPrime(n) {
  for (var i = 2; i <= n / 2; i++) {
    if (n % i === 0)return false
  }
  return true;
}

qingo avatar Nov 18 '14 01:11 qingo

function isPrime(number){
    if(number<=2){
        return false
    }
    for(var i=2;i<=parseInt(number/2);i++){
        if(number%i === 0){
            return false;
        }
    }
    return true;
}

跟楼上的神似 修复01的BUG。 修复4的bug

nunnly avatar Nov 18 '14 02:11 nunnly

function is_prime(n){
    if(n<4){
        return true;
    }
    for(var i=2;i<=Math.sqrt(n);i++){
        if(n%i==0){
            return false;
        }
    }
    return true;
}

weisuiyu avatar Nov 18 '14 02:11 weisuiyu

           function isPrime( n ) {
                var sqrt_n = Math.sqrt( n );
                var sqrt_n_half = sqrt_n >> 1;
                if( n===1 || n % 2 === 0 ) {
                    return false;
                }
                for(var i = 1; i <= sqrt_n_half; i++ ) {
                    if( n % ((i << 1) + 1) === 0) 
                        return false;
                }
                return true;

            }
                 console.log(isPrime(157));//true

不是很健壮,可能有bug

businiaowa avatar Nov 18 '14 03:11 businiaowa

function isPrime(number){
    return new Array(Math.floor(Math.sqrt(number))).join("|").split("").reduce(function(idx) {
        return (idx < 0) ? idx : (number % idx ? idx + 1 : -1);
    }, 2) >= 0;
}

for(var i = 1; i < 20; i++) {
    console.log(isPrime(i));
}

console.log(isPrime(157));

效率不高,只是写着看起来不一样而已。

全程没有 for 之类的 -。 -

XadillaX avatar Nov 18 '14 03:11 XadillaX

function isPrime(number) {
    return isNaN(number)?
                        (number.numa <== 1?
                            false:
                            (number.numb === 1?
                                true:
                                    (number.numa % number.numb === 0?
                                        false:
                                        isPrime({"numb":number.numb - 1,"numa":number.numa})))):
                            isPrime({"numa":number,"numb":number - 1})
}

强行用递归,就是这么任性。没有用if和循环,没有考虑效率。

mapleincode avatar Nov 18 '14 05:11 mapleincode

function isPrime(number){
  return !/^1?$|^(11+?)\1+$/.test(new Array(number + 1).join('1'));
}

很久前看到的用正则判断的,脑洞大开。 Reference:http://montreal.pm.org/tech/neil_kandalgaonkar.shtml

teabyii avatar Nov 18 '14 06:11 teabyii

@jsenjoy 这个赞

XadillaX avatar Nov 18 '14 06:11 XadillaX

@jsenjoy 赞

justjavac avatar Nov 19 '14 02:11 justjavac

    function isPrime(num){
        if(num==1){
            return false;
        }
        if(num==2){
            return true;
        }
        for(var i=2;i<num/2;i++){
            if(num%i===0){
                return false;
            }
            else{
                return true;
            }
        }
    }
    console.log(isPrime(1));
    console.log(isPrime(2));
    console.log(isPrime(4));
    console.log(isPrime(157));

MissBean avatar Nov 19 '14 02:11 MissBean

@silencebean 你这个不对

qingo avatar Nov 19 '14 02:11 qingo

@qingo 为什么

MissBean avatar Nov 19 '14 06:11 MissBean

@silencebean 你测下,if return false 然后 else return true 这样 在循环第一次时肯定会return值 也就是当i===2时 就退出了

qingo avatar Nov 23 '14 08:11 qingo

    function isPrime(number){
      if(number<2) return !1;
      for(var i=Math.sqrt(number)|0;i>1;i--){
        if(!(number%i)) return !1;
      }
      return !0;
    }

不知是否有bug,效率也不高

VaJoy avatar Mar 07 '15 02:03 VaJoy