Maison >interface Web >js tutoriel >Question amusante JavaScript : nombres premiers palindromiques

Question amusante JavaScript : nombres premiers palindromiques

黄舟
黄舟original
2017-02-04 15:35:501863parcourir

Un « palindrome premier » est un nombre qui est lui-même un nombre premier et dont le palindrome est aussi un autre nombre premier.

Par exemple :

13 17 31 37 71 73

Il s'agit d'une séquence première palindromique.

13 est un nombre premier, et son palindrome 31 est également un nombre premier.

17 est un nombre premier, et son palindrome 71 est également un nombre premier.

La tâche est la suivante :

Trouver tous les nombres premiers palindromiques entre deux entiers positifs donnés. Le tableau renvoyé doit être trié du plus petit au plus grand.

backwardsPrime(2, 100) // => [13, 17, 31, 37, 71, 73, 79, 97]   
backwardsPrime(9900, 10000) // => [9923, 9931, 9941, 9967]

Quand on voit le mot « nombre premier palindromique », la première chose qui nous vient à l'esprit est un nombre premier.

Par conséquent, je suppose qu'il doit y avoir un moyen de déterminer les nombres premiers :

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;  
};

Ensuite, il doit y avoir un moyen d'obtenir le palindrome d'un certain nombre :

Number.prototype.palindrome = function(){  
    return (this + "").split("").reverse().join("") - 0;  
};

D'accord, le matériel est prêt, commençons le travail !

Traversez de l'entier positif de gauche à l'entier positif de droite Si un nombre est un nombre premier et que son palindrome est également un nombre premier, alors ajoutez-le au tableau !

Cependant, une chose à noter est que si un nombre est à la fois un nombre premier et un palindrome lui-même, cela ne fonctionnera pas ! Je dois l'éviter !

Bien que cela semble être plus conforme au sens littéral de « nombre premier palindrome », le sens de notre question est que deux nombres premiers sont des palindromes l'un de l'autre !

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;  
}

Ce qui précède est le contenu de la question amusante JavaScript : nombres premiers palindromiques. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !


Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn