python输出回文素数_Python-打印指定范围内的全部回文素数(高教社,《Python编程基础及应用》习题8-7) (10分) 回文素数是指一个数既是素数又是回文数,例如131既是素数又是回文数...

前言

PTA程序设计类教学平台—Python作业

题目:

回文素数是指一个数既是素数又是回文数,例如131既是素数又是回文数。请实现下述两个函数,帮助测试程序完成如下功能:从键盘输入正整数N, 打印从1 ~ N(包含N)的全部回文素数,一行一个。

函数接口定义:

def isPrime(num):

def reverseNumber(num):

isPrime()用于判断整数num是否是素数,是返回True, 否则返回False. reverseNumber()用于返回整数num的反向数,321的反向数为123, 32的反向数为23。

裁判测试程序样例:

N = int(input())

for n in range(1,N+1):

if isPrime(n) and reverseNumber(n) == n:

print(n)

输入样例:

在这里给出一组输入。例如:

400

输出样例:

2

3

5

7

11

101

131

151

181

191

313

353

373

383

首先了解什么是素数

质数(Prime number),又称素数,指在大于1的自然数中,除了1和该数自身外,无法被其他自然数整除的数(也可定义为只有1与该数本身两个因数的数)。

举个例子:7这个数,从2开始一直到6,都不能被它整除,只有1和它本身(7)才能被整除,所以7就是一个质数。

回文数

正序和倒序都是一样的就叫回文数

完整代码:

N = int(input())

def isPrime(n):

if n > 1 :

for i in range(2, n):

if n % i == 0:

break

else:

return n

def reverseNumber(n):

num = str(n)

m = num[::-1]

if num == m:

return n

for n in range(1, N + 1):

if isPrime(n) and reverseNumber(n) == n:

print(n)

exit(0)

详细解析:

按照题目要求先把题目提供的代码放进去并分析一下

N = int(input())

def isPrime(n):

pass

def reverseNumber(n):

pass

for n in range(1,N+1):

if isPrime(n) and reverseNumber(n) == n:

print(n)

可以看出一开始定义了一个N用于接收输入,再用for循环遍历一遍1-N

这句if isPrime(n) and reverseNumber(n) ==n: 用来判断调用两个函数返回的值是不是相等的如果相等就输出当下的n。

is :是比较两个引用是否指向了同一个对象(引用比较)。

== :对于数值类型的数据是比较两个对象是否相等。但是对于非数值型的数据,比如字符串,类创建的对象python默认去比较两个对象的地址。

了解了整个框架后就只需要编写判断素数和判断回文数的函数了

1. 判断一个数是不是素数

def isPrime(n): #一个命名为isPrime的函数

if n > 1 :#素数必须大于一所以用一个if判断n是不是大于1的

for i in range(2, n): #range(start,end,step=)-----range(开始值,结束值,步长)没写默认为1

if n % i == 0:#如果是n除i等于0说明不是素数直接(break)结束for循环

break

else:

return n #返回n的值给函数调用处

2. 判断回文数

def reverseNumber(n): #一个命名为reverseNumber的函数

num = str(n)

m = num[::-1] #倒序num给m

if num == m: #判断m和num 是不是相等的如果是说明是回文数

return n

最后结合代码

N = int(input())

def isPrime(n):

if n > 1 :

for i in range(2, n):

if n % i == 0:

break

else:

return n

def reverseNumber(n):

num = str(n)

m = num[::-1]

if num == m:

return n

for n in range(1, N + 1):

if isPrime(n) and reverseNumber(n) == n:

print(n)

exit(0)

到这后就完美解决了~

实现的方法有很多,本篇博客只是给新手提供一种思路。

如有帮助记得点赞~

本文地址:https://blog.csdn.net/weixin_43518405/article/details/110247235

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值