给定整数 n (1<=n <=300),代码需要返回第 n 个回文素数。
我已经编写了下面的代码块来实现上述目标,但是对于我的一生,我无法理解为什么我的代码没有输出给定的预期值。事实上,我什至不知道是我的代码错了,还是给定的预期值只是公牛。非常感谢一些指导。
预期输出: symmetricPrime2(72) 返回 70507
实际输出: symmetricPrime2(72) 返回 30103
def symmetricPrime2(n,candidate=2):
primes = [2]
counter = 1
while True:
i = 0
prep = 0
candidate = candidate + 1
candidate_sr = str(candidate)
#test if candidate is prime
for prime in primes:
if candidate%prime == 0:
prep += 1
#test if candidate is palindromic
candidate_sr_rev = candidate_sr[len(candidate_sr)::-1]
if prep == 0 and candidate_sr == candidate_sr_rev:
primes.append(candidate)
if len(primes) == n:
break
return primes[-1]