问题描述
素数的平方是回文,即正读和反读相同。比如11 * 11=121,
求不超过1000的平方回文素数。
- 分析
构造素数判断函数;
构造判断回文的函数;
遍历1000以内的数,找到素数;
判断该数的平方是否满足回文,且不超过1000;
代码
# 素数判断函数
def huiwen(i):
if int(str(i)[::-1])==i:
return True
# 回文判断函数
import math
def sushu(n):
for k in range(2,int(math.sqrt(n)+1)):
if n%k==0:
return False
return True
# 循环,寻找符合条件的素数
c=[]
for i in range(2,1000):
if sushu(i): #判定素数
b=i*i
if huiwen(b): #判定回文
c.append(i)
print c
# 结果
[2, 3, 11, 101, 307]