您的位置:首页 > 编程语言 > Python开发

python学习5

2016-06-07 17:15 246 查看
题目: 可逆素数   1~900之间的可逆素数 (一个数颠倒位置后仍然是素数)

   思路:  首先利用筛选法找出所有的素数 建立在一个table中

                然后再去迭代每个素数 (在表中的就是说是true的标记的就是素数)去生成一个反序数 (一位数的数字是没有反序数的)然后再去判断是不是素数

                 寻找反序数的方法 是利用字符串的思想

                 如果反序数是素数的话 我们还要避免后面的重复查找的操作  同时还要判断反序数不能超过900 同时还要过滤到反序数不能等于其自身               (这个三个点很难考虑到,coding的时候要注意考虑全面)

#define a method to get the prime numbers between 0~n

#coding utf - 8
def getPrimeTable(n) :
y = [True] * n
for num in range(2,n):
if not y[num]: continue
for fal in range(num *num , n, num):
y[fal]=False
return y
# this method get the table with the true or false to sign the each number between 0~n
# reverse the number
prime=getPrimeTable(900)      #the value of the table is true or the false
for x in range(11, 900):
if not prime[x]:continue
reserve=int(str(x)[ : :-1])  #get the reverse numbers
if reserve<900 and prime[reserve] and reserve != x :
prime[reserve]=False
print x,reserve


13 31

17 71

37 73

79 97

107 701

113 311

157 751

167 761

337 733

347 743

关键点:    注意以上定义的这个方法 返回的是有n个元素的列表只是这些个列表的元素值为true 或者是false 用来标记所制定的index是不是一个素数

tip 1 :   这边可以将筛选法的定义成一个生成素数的table的函数 ,这样就可以调用

tip 2:   寻找反序数的方法 是利用字符串的思想str() 内建函数  可以将任何类型转换成字符串类型输出

       字符串的创建: 利用str()  也可以直接利用单引号赋值给某个变量

       字符串的访问:因为在python中是没有字符的概念的,所以在访问字符串的时候就是利用[1]  or  [ 1 : 5]  or [6 :  ]即利用方括号再加上一个索引或者是多个索引的方式来访问子字符串

       字符串的改变:由于字符串的是不可改变的,所以只能通过给新的变量重新赋值一个新的字符串或者是重复值原有的变量   若删除的话,也是要重新组合 或者就是赋空值清空字符串或者就是del

       字符串的操作符:序列操作符切片[ ]  [ : ]

       [ start :  end ] visti the number from the start to the end but not including the index of end

      
attention:如果开始和结束的index 并没有指定 ,那么默认就是第一个和最后一个  同时这种操作符切片可以访问字符串的一个或者一串的字符

                        正向索引:0 开始

                        反向索引:从-1 开始

0123
-4-3-2-1
   

y=123
x=str(y)
print x
print  x[ : ]
print x[0:2]
print  x[1: ]
print x[ : :-1]
print x[-3 :-1]


 123

123

12

23

321     实现了反序

12

     
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息