【python百度】双素数?
题目:一个正整数是素数当且仅当它除了1和自身以外没有其他因子,现在我们定义双素数;一个正整数是双素数当且仅当它本身是个素数,并且将他的十进制表示反转后得到数不等于它自身且也是个素数,如13就是一个双素数,因为13和31不相等且都是素数,现给出一个整数k,你需要找到第k小的双素数 。
code:
def isPrime2(k):
# 数理定理:如果一个数不是素数,那么它可以分解成一系列小于它的素数乘积。
if k <= 2:
return True
for i in range(len(prime_array)):
try:
if k > prime_array[i] and k % prime_array[i] == 0:
return False
except:
print("error")
prime_array.append(k)
return True
def getPrimes2(n):
primes = []
for i in range(2, n + 1):
if isPrime2(i):
primes.append(i)
return primes
def swap(str):
# 字符串的反转
str = list(str)
begin = 0
end = len(str) - 1
while begin < end:
tmp = str[begin]
str[begin] = str[end]
str[end] = tmp
begin += 1
end -= 1
return ''.join(str)
if __name__ == "__main__":
prime_array = [2]
prime_array = getPrimes2(40)
count = 0
k = 1
prime_array1 = []
for i in range(len(prime_array)):
if prime_array[i] > 10:
swi = swap(str(prime_array[i]))
if int(swi) in prime_array and int(swi) != prime_array[i]: # 判断反转是否在数组中,并且该反转并不相等
count += 1
if count == k:
print(prime_array[i])
程序运行结果:
13
