Skip to content

Commit 40bf9a3

Browse files
committed
1.Add filter practice
2.Add prime_number Signed-off-by: Jackey <smjjackey@sina.com>
1 parent 7b2d3ca commit 40bf9a3

File tree

4 files changed

+87
-0
lines changed

4 files changed

+87
-0
lines changed

filter_practice.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
def is_palindrome(n):
2+
return all(str(n)[i]==str(n)[len(str(n))-1-i] for i in range(int(len(str(n))/2)))
3+
4+
output = filter(is_palindrome, range(1, 1000))
5+
print('1~1000:', list(output))
6+
if list(filter(is_palindrome, range(1, 200))) == [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 22, 33, 44, 55, 66, 77, 88, 99, 101, 111, 121, 131, 141, 151, 161, 171, 181, 191]:
7+
print('测试成功!')
8+
else:
9+
print('测试失败!')
File renamed without changes.

prime_number.py

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
import math
2+
def generate_prime():
3+
n=100
4+
pri_num_list=[]
5+
for num in range(2, n + 1): # the range of candidate numbers
6+
if all(num % j != 0 for j in range(2, int(math.sqrt(num))+1)): # Try divide 2 to sqrt(num)
7+
pri_num_list.append(num)
8+
print(len(pri_num_list),pri_num_list)
9+
10+
def generate_prime2():
11+
n = 100
12+
pri_num_list = []
13+
for num in range(2,n+1): # the range of candidate numbers
14+
flag = True
15+
for j in range(2, int(math.sqrt(num)+1)): # Try divide 2 to sqrt(num)
16+
if(num%j==0):
17+
flag=False
18+
break
19+
if(flag):
20+
pri_num_list.append(num)
21+
print(len(pri_num_list), pri_num_list)
22+
23+
def generate_prime3():
24+
n = 100
25+
pri_num_list = []
26+
for num in range(2, n + 1):
27+
flag1 = True
28+
for j in range(2, int(math.sqrt(num) + 1)): # Try divide 2 to sqrt(num)
29+
flag2=True
30+
### check whether j is a prime ###
31+
for k in range(2, int(math.sqrt(j) + 1)):
32+
if (j % k == 0):
33+
flag2 = False # j is not a prime
34+
break
35+
if(flag2==False):
36+
continue
37+
### check whether j is a prime ###
38+
39+
if(num % j==0): # j is a prime
40+
flag1=False # num is not a prime
41+
break
42+
if (flag1):
43+
pri_num_list.append(num)
44+
print(len(pri_num_list), pri_num_list)
45+
46+
generate_prime()
47+
generate_prime2()
48+
generate_prime3()

prime_numbers_iter_filter.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
"""
2+
埃氏筛法求素数, from https://github.com/michaelliao/learn-python3/blob/master/samples/functional/prime_numbers.py
3+
"""
4+
def main():
5+
for n in primes():
6+
if n < 1000:
7+
print(n)
8+
else:
9+
break
10+
11+
def _odd_iter():
12+
n = 1
13+
while True:
14+
n = n + 2
15+
yield n
16+
17+
def _not_divisible(n):
18+
return lambda x: x % n > 0
19+
20+
def primes():
21+
yield 2
22+
it = _odd_iter()
23+
# print(it) # one element 2 and generator object
24+
while True:
25+
n = next(it)
26+
yield n
27+
it = filter(_not_divisible(n), it)
28+
29+
if __name__ == '__main__':
30+
main()

0 commit comments

Comments
 (0)