>  기사  >  웹 프론트엔드  >  JavaScript 재미있는 질문: 회문 소수

JavaScript 재미있는 질문: 회문 소수

黄舟
黄舟원래의
2017-02-04 15:35:501816검색

"회문 소수"는 그 자체가 소수이고 그 회문이 또 다른 소수이기도 한 숫자입니다.

예:

13 17 31 37 71 73

이것은 회문 소수열입니다.

13은 소수이고, 그 회문 31도 소수입니다.

17은 소수이고, 회문 71도 소수입니다.

작업은 다음과 같습니다.

주어진 두 양의 정수 사이에서 모든 회문 소수를 찾으십시오. 반환된 배열은 작은 것부터 큰 것까지 정렬되어야 합니다.

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

자, 재료는 모두 준비되었으니 작업을 시작하겠습니다!

왼쪽의 양의 정수에서 오른쪽의 양의 정수로 이동합니다. 숫자가 소수이고 회문도 소수라면 이를 배열에 추가합니다.

그러나 한 가지 주의할 점은 숫자가 소수이자 회문 자체인 경우에는 작동하지 않는다는 것입니다! 건너뛰어야 해!

이것이 "회문 소수"의 문자 그대로의 의미에 더 부합하는 것처럼 보이지만, 우리 질문의 의미는 두 소수가 서로의 회문이라는 것입니다!

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 중국어 사이트(www.php.cn)를 참고해주세요!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.