Leetcode866. 回文素数(python)

5415 ワード

1.テーマ
N以上の最小エコー素数を求める.
振り返ると、1つの数が1より大きく、その因数が1とそれ自体しかない場合、この数は素数である.
例えば、2、3、5、7、11および13は素数である.
振り返ると、1つの数が左から右へ読むのと右から左へ読むのと同じであれば、この数は回文数です.
例えば、12321は、返信数である.
例1:
67

ソース:力ボタン(LeetCode)リンク:https://leetcode-cn.com/problems/prime-palindrome著作権はインターネットの所有に帰属する.商業転載は公式の授権に連絡してください.非商業転載は出典を明記してください.
2回答
他の人が解答して書いたのを見て、主に8桁の回文素数が存在しないので、8桁の素数は10_しかありません000_019.また,素数であるか否かを判断するには,まず返事であるか否か(判断が速い)を判断する必要がある.
class Solution:
    def primePalindrome(self, N: int) -> int:
        def isPrime(x):
            if x == 1:
                return False
            for i in range(2,int(x**0.5)+1):
                if x%i == 0:
                    return False
            return True

        def isPalindrome(x):
            x = str(x)
            left = 0
            right = len(x)-1
            while left < right:
                if x[left] != x[right]:
                    return False
                left += 1
                right -= 1
            return True
            
        while True:
            if isPalindrome(N) and isPrime(N):
                break
            N += 1
            if 10**7 < N < 10**8:
                N = 10**8
        return N