求回文素数(筛选法判断素数,字符串比较判别回文)

求回文素数(筛选法判断素数,字符串比较判别回文)_第1张图片求回文素数(筛选法判断素数,字符串比较判别回文)_第2张图片
一个比较常见的求素数的办法是埃拉托斯特尼筛法(the Sieve of Eratosthenes) ,说简单一点就是画表格,然后删表格,如图所示:
在这里插入图片描述

从2开始依次往后面数,如果当前数字一个素数,那么就将所有其倍数的数从表中删除或者标记,然后最终得到所有的素数。

有一个优化:

标记2和3的倍数的时候,6被标记了两次。所以从i的平方开始标记,减少很多时间。

比如3的倍数从9开始标记,而不是6,并且每次加6。

除了2以外,所有素数都是奇数。奇数的平方还是奇数,如果再加上奇数就变成了偶数一定不会是素数,所以加偶数(2倍素数)。

本题重点在于一定区间的素数求法,这里采用的筛选法,即将


a, b = map(int,list(input().strip().split(' ')))
# a = 1
# b = 9
def isPrime(n):
    if n == 1:
        return 0
    if n > 2 and n%2 == 0:
        return 0
        
    i = 3
    while i*i <= n:
        if n%i == 0:
            return 0
        i += 2
    return 1

huiwen = []
for v in range(a, b+1):
    if v - int(str(v)[::-1]) == 0 and isPrime(v):
        huiwen.append(v)
# print(huiwen)
print(len(huiwen))


你可能感兴趣的:(python)