JavaScript の楽しい質問: 回文素数

黄舟
リリース: 2017-02-04 15:35:50
オリジナル
1780 人が閲覧しました

「回文素数」とは、それ自体が素数であり、その回文もまた別の素数である数です。

例:

13 17 31 37 71 73

これは回文素数列です。

13は素数であり、その回文31も素数です。

17は素数であり、その回文71も素数です。

タスクは次のとおりです:

指定された 2 つの正の整数間のすべての回文素数を検索します。返された配列は、小さいものから大きいものへと並べ替える必要があります。

backwardsPrime(2, 100) // => [13, 17, 31, 37, 71, 73, 79, 97]   
backwardsPrime(9900, 10000) // => [9923, 9931, 9941, 9967]
ログイン後にコピー

「回文素数」という言葉を見たとき、最初に思い浮かぶのは素数です。

それで、素数を決定する方法があるはずです:

Number.prototype.isPrime = function(){  
    var maxFactor = Math.floor(Math.sqrt(this));  
        for(var i=2;i<=maxFactor;i++){  
            if(this % i === 0){  
                return false;  
            }  
        }  
    return true;  
};
ログイン後にコピー

それから、特定の数の回文を取得する方法があるはずです:

Number.prototype.palindrome = function(){  
    return (this + "").split("").reverse().join("") - 0;  
};
ログイン後にコピー

さて、材料はすべて準備ができたので、始めましょう!

数値が素数であり、その回文も素数である場合は、左側の正の整数から右側の正の整数へのトラバースを開始し、それを配列に追加します。

ただし、注意すべき点が 1 つあります。それは、数値が素数であり、かつ回文そのものである場合、それは機能しないということです。スキップしなきゃ!

これは「回文素数」の文字通りの意味に近いように思えますが、私たちの質問の意味は、2 つの素数が互いに回文であるということです。

function backwardsPrime(start, stop){  
    var result = [];  
    for(var i=start;i<=stop;i++){  
        if(i.isPrime() && i.palindrome().isPrime() && i !== i.palindrome()){  
            result.push(i);  
        }  
    }  
    return result;  
}
ログイン後にコピー

上記は JavaScript の興味深い質問「回文素数」の内容です。さらに関連する内容については、PHP 中国語 Web サイト (www.php.cn) に注目してください。


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!