JavaScriptはfilter法を用いて100以内の素数の高速フィルタリングを実現します.

1050 ワード

filter()は、各要素に導入された関数を順次作用させ、その戻り値がtrueかfalseかによって、その要素を保留するかそれとも廃棄するかを決定する.ですから、百以内の素数を判断するポイントは素数を知ることです.
素数:一と自身を除いて他の数によって割り出されない数が素数となります.定義が分かりました.具体的なコードを見ます.
function get_primes(arr) {
        return arr.filter(function (element) {
            var flag=true;
            if(element<2){
                flag=false;
            }
            else {
                for(var i=2;i
arrは、入力された配列として、任意の長さであってもよく、配列の要素ごとにfilterを用いてフィルタリングし、戻り値はtrueの保持となり、falseのフィルタリングに戻り、関数の中でフラグとしてflagsを使用し、arr中のelementが自身以外にも存在する場合、flags=falseを除去することができます.そしてサイクルを跳び出して、最終的にフラグを返してフィルタ機能を実現します.以下はテスト部分です.
    var x, r, arr = [];
    for (x = 1; x < 100; x++) {
        arr.push(x);
    }
    r = get_primes(arr);
    if (r.toString() === [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97].toString()) {
        alert('    !');
    } else {
        alert('    : ' + r.toString());
    }