求一千以内的回文素数
回文素数指的是,对一个整数n从左向右和从右向左读其数值都相同且n为素数,则称整数n为回文素数。对于偶数位的整数,除了11以外,都不存在回文素数。即所有的4位整数、6位整数、8位整数等都不存在回文素数。下面列出两位和三位整数中包含的所有回文素数。两位回文素数:11。三位回文素数:101,131,151,181,191,313,353,373,383,727,757,787,797,919,929。#
·
回文素数指的是,对一个整数n从左向右和从右向左读其数值都相同且n为素数,则称整数n为回文素数。
对于偶数位的整数,除了11以外,都不存在回文素数。即所有的4位整数、6位整数、8位整数等都不存在回文素数。
下面列出两位和三位整数中包含的所有回文素数。两位回文素数:11。三位回文素数:101,131,151,181,191,313,353,373,383,727,757,787,797,919,929。
# !/user/bin/env python
# -*- coding:utf-8 -*-
# author:Zfy date:2021/7/5 18:59
import math
# 判断素数
def prime(n):
for i in range(2, int(math.sqrt(n))): # 开方转为整型
if n % i == 0: # 不是素数返回0
return 0
return 1 # 是素数返回1
def palindrome_prime():
for i in range(0, 10): # 穷举第一位
for j in range(0, 10): # 穷举第二位
for k in range(0, 10): # 穷举第三位
n = i * 100 + j * 10 + k # 组成的整数
m = i + j * 10 + k * 100 # 对应的反序数
if i == 0 and j == 0: # 处理整数前两位为0的情况
m = m // 100
elif i == 0: # 处理整数第一位为0的情况
m = m // 10
if n > 10 and n == m and prime(n): # 若大于十且为回文数并且是素数
print(n, end=" ")
palindrome_prime()
《趣学Python算法100例》
更多推荐
已为社区贡献5条内容
所有评论(0)