@@ -3,22 +3,25 @@ def generate_prime():
3
3
n = 100
4
4
pri_num_list = []
5
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)
6
+ if all (num % j != 0 for j in range (2 , int (math .sqrt (num ))+ 1 )):
7
+ # Try divide 2 to sqrt(num)
8
+ ##### Actually, for num=2 or num=3, inner loop does not do, the all returns true
9
+ ##### because if the iterable is empty, all still return true,but 2,3 are prime
7
10
pri_num_list .append (num )
8
11
9
12
print (len (pri_num_list ),pri_num_list )
10
13
11
14
def generate_prime1 ():
12
15
n = 100
13
- pri_num_list = [num for num in range (2 , n + 1 ) if all (num % j != 0 for j in range (2 , int (math .sqrt (num )) + 1 ))]
16
+ pri_num_list = [num for num in range (2 , n + 1 ) if all (num % j != 0 for j in range (2 , int (math .sqrt (num )+ 0.5 ) + 1 ))]
14
17
print (len (pri_num_list ), pri_num_list )
15
18
16
19
def generate_prime2 ():
17
20
n = 100
18
21
pri_num_list = []
19
22
for num in range (2 ,n + 1 ): # the range of candidate numbers
20
23
flag = True
21
- for j in range (2 , int (math .sqrt (num )+ 1 ) ): # Try divide 2 to sqrt(num)
24
+ for j in range (2 , int (math .sqrt (num )+ 0.5 ) + 1 ): # Try divide 2 to sqrt(num)
22
25
if (num % j == 0 ):
23
26
flag = False
24
27
break
@@ -32,15 +35,15 @@ def generate_prime3():
32
35
for num in range (2 , n + 1 ):
33
36
flag1 = True
34
37
for j in range (2 , int (math .sqrt (num ) + 1 )): # Try divide 2 to sqrt(num)
35
- flag2 = True
38
+ flag2 = True
36
39
### check whether j is a prime, if j is not a prime, continue,
37
40
# because if the number can be divided by a not prime, it must can be divided by the prime
38
41
# number between 2~10 i.e. 2,3,5,7###
39
42
for k in range (2 , int (math .sqrt (j ) + 1 )):
40
43
if (j % k == 0 ):
41
44
flag2 = False # j is not a prime
42
45
break
43
- if (flag2 == False ):
46
+ if (not flag2 ):
44
47
continue
45
48
### check whether j is a prime ###
46
49
0 commit comments