Leetcode866. 回文素数(python)
5415 ワード
1.テーマ
N以上の最小エコー素数を求める.
振り返ると、1つの数が1より大きく、その因数が1とそれ自体しかない場合、この数は素数である.
例えば、2、3、5、7、11および13は素数である.
振り返ると、1つの数が左から右へ読むのと右から左へ読むのと同じであれば、この数は回文数です.
例えば、12321は、返信数である.
例1:
ソース:力ボタン(LeetCode)リンク:https://leetcode-cn.com/problems/prime-palindrome著作権はインターネットの所有に帰属する.商業転載は公式の授権に連絡してください.非商業転載は出典を明記してください.
2回答
他の人が解答して書いたのを見て、主に8桁の回文素数が存在しないので、8桁の素数は10_しかありません000_019.また,素数であるか否かを判断するには,まず返事であるか否か(判断が速い)を判断する必要がある.
N以上の最小エコー素数を求める.
振り返ると、1つの数が1より大きく、その因数が1とそれ自体しかない場合、この数は素数である.
例えば、2、3、5、7、11および13は素数である.
振り返ると、1つの数が左から右へ読むのと右から左へ読むのと同じであれば、この数は回文数です.
例えば、12321は、返信数である.
例1:
:6
:7
ソース:力ボタン(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