python-区间内的真素数(赛氪OJ)

[题目描述]
找出正整数 M 和 N 之间(N 不小于 M)的所有真素数。
真素数的定义:如果一个正整数 P 为素数,且其反序也为素数,那么 P 就为真素数。
例如,11,13 均为真素数,因为 11 的反序还是为 11,13 的反序为 31 也为素数。
输入:
输入两个数 M 和 N,空格间隔。
输出:
按从小到大输出 M 和 N 之间(包括 M 和 N)的真素数,逗号间隔。如果之间没有真素数,则输出 No。
样例输入1
10 35

样例输出1
11,13,17,31

提示:
1≤M≤N≤100000
来源/分类(难度系数:一星)


完整代码展示:
a,b=map(int,input().split())
c=[]
for i in range(a,b+1):
      l=2
      m=int(pow(i,0.5))
      while l<=m:
              if i%l==0:
                  break
             l+=1
      if l>m and i>=2:
          d=list(str(i))
          d.reverse()
          sum=""
          for j in range(0,len(d)):
               sum+=d[j]
          sum=eval(sum)
          x=2
          y=int(pow(sum,0.5))
          while x<=y:
                  if sum%x==0:
                       break
                  x+=1
         if x>y:
              c.append(i)
if len(c)==0:
    print("No")
else:
    for k in range(0,len(c)-1):
          print(c[k],end=",")
    print(c[-1])


代码解释:
a,b=map(int,input().split())
 c=[]                                         
”,让用户输入限定求解区间的两个数值a,b。建立一个空列表c。
for i in range(a,b+1):
        l=2
        m=int(pow(i,0.5))
        while l<=m:
                if i%l==0:
                    break
               l+=1
               ”,根据素数(质数)的定义,遍历a到b区间内的所有数值,查找符合条件的数值。
if l>m and i>=2:
       d=list(str(i))
       d.reverse()
       sum=""
       for j in range(0,len(d)):
             sum+=d[j]
       sum=eval(sum)
       x=2
       y=int(pow(sum,0.5))
       while x<=y:
               if sum%x==0:
                    break
              x+=1
       if x>y:
            c.append(i)
            ”,如果该数值为质数,则将它转换为字符串并储存进列表d中。接着反转列表d,建立一个空字符串sum,让sum从左到右依次连接列表d中所有元素组成新的字符串sum。连接完成后,将新的字符串sum由字符串转换为可计算的数值,并按照质数的定义判断其是否为质数。如果是,则将其添加进列表c中。
if len(c)==0:
      print("No")
 else:
        for k in range(0,len(c)-1):
              print(c[k],end=",")
        print(c[-1])
                          ”,遍历结束后,判断列表c是否为空。如果是,则输出”No”;否则遍历列表c,从左至右依次打印列表c中所有元素,每两个元素之间插入一个逗号(末尾不插入)。


运行效果展示:

d0f21f394501487f86d7cbd637c69cba.jpg

8597bab72dfb427282e1f5804cfb7b06.jpg 

             (声明:以上内容均为原创) 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

闪云-微星

感谢大家的支持与鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值