[题目描述]
现在给出一个素数,这个素数满足两点:
1、 只由 1∼9 组成,并且每个数只出现一次,如 13,23,1289 。
2、 位数从高到低为递减或递增,如 2459,87631 。
请你判断一下,这个素数的回文数是否为素数( 13 的回文数是 131 , 127 的回文数是 12721 )。
输入格式:
输入只有 1 行。
第 1 行输入一个整数 t ,保证 t 为素数。
输出格式:
输出一行字符串,如果 t 的回文数仍是素数,则输出“prime”,否则输出"noprime"。
样例输入#1
13
样例输出#1
prime
样例输入#2
17
样例输出#2
noprime
数据范围
对于 100% 的数据,保证 9≤t≤109 。
提示说明:
素数定义为在大于 1 的自然数中,除了 1 和它本身以外不再有其他因数。素数的回文数为题意中的定义, 1331 不是素数的回文数。
来源/分类(难度系数:一星)
模拟 质数 数学
完整代码展示:
def prime(i):
j=2
k=pow(i,0.5)
while j<=k:
if i%j==0:
break
j+=1
if j>k:
return 1
else:
return 0
n=int(input())
list_1=list(str(n))
list_2=list_1[0:-1]
list_2.reverse()
list_1=list_1+list_2
sum=""
for i in range(0,len(list_1)):
sum+=list_1[i]
sum=eval(sum)
if prime(sum)==1:
print("prime")
else:
print("noprime")
代码解释:
“def prime(i):
j=2
k=pow(i,0.5)
while j<=k:
if i%j==0:
break
j+=1
if j>k:
return 1
else:
return 0 ”,根据质数的定义自定义一个函数prime(),判断关键字是否为质数。如果是,则返回值1,否则返回值0。
“n=int(input()) ”,让用户输入一个质数n。
“list_1=list(str(n))
list_2=list_1[0:-1]
list_2.reverse()
list_1=list_1+list_2
sum=""
for i in range(0,len(list_1)):
sum+=list_1[i]
sum=eval(sum) ”,将n转换为字符串储存在列表list_1中,将list_1中除最后一个元素的所有元素储存在列表list_2中,再将list_2反转,合并list_1与list_2为list_1。接着建立一个空字符串sum,让sum依次连接list_1中元素,最后将字符串sum转换为可计算数值sum。
“if prime(sum)==1:
print("prime")
else:
print("noprime") ”,判断prime(sum)的返回值是否为1,如果是,则打印“prime”,否则打印“noprime”。
运行效果展示:
(声明:以上内容均为原创)