Hướng dẫn list comprehension python prime numbers - danh sách hiểu số nguyên tố python

Tôi đã cố gắng tạo tất cả các số nguyên tố trong phạm vi X đến Y. Tôi đã thử ví dụ đơn giản trước:

>>> [x for x in range[2, 20]
     if all[x % y != 0 for y in range[2, x]]]
[2, 3, 5, 7, 11, 13, 17, 19]
0 có nghĩa là kiểm tra xem 10 có phải là số nguyên tố không: đây là mã của tôi:
Here is my code:

prime_list = [x for x in range[10, 11] for y in range[2,x] if x % x == 0 and x % 1 == 0 and x % y != 0]

Tôi biết rằng điều này thiếu tùy chọn để nói với biểu thức rằng

>>> [x for x in range[2, 20]
     if all[x % y != 0 for y in range[2, x]]]
[2, 3, 5, 7, 11, 13, 17, 19]
1 nên được kiểm tra tất cả Y trong
>>> [x for x in range[2, 20]
     if all[x % y != 0 for y in range[2, x]]]
[2, 3, 5, 7, 11, 13, 17, 19]
2 và trả về true nếu và chỉ khi tất cả đã đáp ứng điều kiện này.

làm sao chúng ta làm việc đó bây giờ?

Đã hỏi ngày 25 tháng 6 năm 2015 lúc 8:50Jun 25, 2015 at 8:50

Sử dụng

>>> [x for x in range[2, 20]
     if all[x % y != 0 for y in range[2, x]]]
[2, 3, 5, 7, 11, 13, 17, 19]
3 để kiểm tra tất cả các yếu tố [từ 2 đến X-1] Điều kiện đáp ứng:

>>> [x for x in range[2, 20]
     if all[x % y != 0 for y in range[2, x]]]
[2, 3, 5, 7, 11, 13, 17, 19]

Đã trả lời ngày 25 tháng 6 năm 2015 lúc 8:53Jun 25, 2015 at 8:53

Falsetrufalsetrufalsetru

345K58 Huy hiệu vàng688 Huy hiệu bạc610 Huy hiệu Đồng58 gold badges688 silver badges610 bronze badges

3

Một cách sử dụng sự hiểu biết có thể là

list[set[range[2,11]] - {x for x in range[11] for y in range[2,x] if x%y == 0}]

Đã trả lời ngày 25 tháng 6 năm 2015 lúc 9:10Jun 25, 2015 at 9:10

Divdivdiv

5635 Huy hiệu bạc10 Huy hiệu Đồng5 silver badges10 bronze badges

Bạn có thể tối ưu hóa thêm bằng cách sử dụng khái niệm của căn bậc hai để không lặp lại trong danh sách và tính toán số nguyên tố nhanh hơn theo cách sau !!

import math
[x for x in range[2, 21] if  all[x % y != 0 for y in range[2, int[math.sqrt[x + 1]] ] ]]

Đã trả lời ngày 25 tháng 5 năm 2021 lúc 22:52May 25, 2021 at 22:52

Chương trình tìm số nguyên tố trong một phạm vi đã cho bằng cách sử dụng danh sách toàn diện:

min = 10

max = 100

primes = [num for num in range[min,max] if 0 not in [num%i for i in range[2,int[num/2]+1]]]

print [primes]

Eric Aya

69.1K35 Huy hiệu vàng176 Huy hiệu bạc247 Huy hiệu đồng35 gold badges176 silver badges247 bronze badges

Đã trả lời ngày 2 tháng 3 năm 2018 lúc 10:40Mar 2, 2018 at 10:40

@câu trả lời của Falsetru là chính xác. Nhưng ngoài ra, cần chú ý đến mã tối ưu hóa. Như ai đó đã nói trong các bình luận trong câu trả lời của Kasra

In [227]: %timeit [x for x in range[4, 1000] if all[x % y != 0 for y in range[2, int[m.sqrt[x]] + 1]]]
100 loops, best of 3: 2.08 ms per loop

In [228]: %timeit [x for x in range[4, 1000] if all[x % y != 0 for y in range[2, int[m.sqrt[x]] + 1]]]
100 loops, best of 3: 2.09 ms per loop

In [229]: %timeit [x for x in range[4, 1000] if all[x % y != 0 for y in range[2, x-1]]]
100 loops, best of 3: 10.4 ms per loop

In [230]: %timeit [x for x in range[4, 1000] if all[x % y != 0 for y in range[2, x-1]]]
100 loops, best of 3: 10.3 ms per loop

Đã trả lời ngày 25 tháng 6 năm 2015 lúc 9:14Jun 25, 2015 at 9:14

bad_keypointsbad_keypointsbad_keypoints

1.3721 Huy hiệu vàng23 Huy hiệu bạc45 Huy hiệu đồng1 gold badge23 silver badges45 bronze badges

1

Phiên bản với bộ lọc:

filter[lambda x:all[x % y != 0 for y in range[2, x]], range[2, 13]]

Đã trả lời ngày 25 tháng 6 năm 2015 lúc 9:10Jun 25, 2015 at 9:10

DivdivNeoWang

5635 Huy hiệu bạc10 Huy hiệu Đồng20 gold badges72 silver badges123 bronze badges

0

Bạn có thể tối ưu hóa thêm bằng cách sử dụng khái niệm của căn bậc hai để không lặp lại trong danh sách và tính toán số nguyên tố nhanh hơn theo cách sau !!

prime = list[filter[lambda x:all[x % y !=0 for y in range[2,x]],range[2,11]]]
print[prime]

Đã trả lời ngày 25 tháng 5 năm 2021 lúc 22:52Aug 29, 2021 at 6:32

Chương trình tìm số nguyên tố trong một phạm vi đã cho bằng cách sử dụng danh sách toàn diện:

>>> lower = int[input["Enter lower range: "]]

>>> upper = int[input["Enter upper range: "]]

>>> [x for x in range[lower, upper+1] if x>1 if all[x % y != 0 for y in range[2, x]]]

Eric Aya

69.1K35 Huy hiệu vàng176 Huy hiệu bạc247 Huy hiệu đồng11 gold badges65 silver badges104 bronze badges

Đã trả lời ngày 2 tháng 3 năm 2018 lúc 10:40Mar 4 at 15:02

1

@câu trả lời của Falsetru là chính xác. Nhưng ngoài ra, cần chú ý đến mã tối ưu hóa. Như ai đó đã nói trong các bình luận trong câu trả lời của Kasra

primes = [num for num in range[2,1000] if True not in [True for divisor in range[2,[int[num/2]+1]] if num % divisor == 0 and num != 2]]

Đã trả lời ngày 25 tháng 6 năm 2015 lúc 9:14Jun 5 at 1:51

Làm thế nào để bạn in số nguyên tố trong danh sách hiểu trong Python?

Làm thế nào để bạn in 10 số nguyên tố đầu tiên trong Python ?..
numr = int [input ["enter range:"]].
in ["số nguyên tố:", end = ''].
cho n trong phạm vi [1, numr]:.
Đối với tôi trong phạm vi [2, n]:.
if[n%i==0]:.
break..
in [n, end = ''].

Làm thế nào để bạn hiển thị các số nguyên tố trong một danh sách trong Python?

Bước 1: Vòng lặp qua tất cả các yếu tố trong phạm vi đã cho.Bước 2: Kiểm tra từng số nếu nó có bất kỳ yếu tố nào giữa 1 và chính nó.Bước 3: Nếu có, thì số không phải là số nguyên tố và nó sẽ chuyển sang số tiếp theo.Bước 4: Nếu không, đó là số chính và chương trình sẽ in nó và kiểm tra số tiếp theo.

Làm thế nào để bạn kiểm tra các số nguyên tố trong Python?

Kiểm tra xem một số là số nguyên tố hoặc không sử dụng sqrt [] từ nhập khẩu math+ 1]: if [n % k == 0]: flag = 1 break if [flag == 0]: print [n, "là số nguyên tố!"]!!using sqrt[] from math import sqrt # Number to be checked for prime n = 9 flag = 0 if[n > 1]: for k in range[2, int[sqrt[n]] + 1]: if [n % k == 0]: flag = 1 break if [flag == 0]: print[n," is a Prime Number! "] else: print[n," is Not a Prime Number!

Làm thế nào để bạn liệt kê một số nguyên tố?

Các số nguyên tố từ 1 đến 100 là: 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97. Tại sao 1 không phải là số nguyên tố?1 không phải là số nguyên tố vì nó chỉ có một yếu tố, cụ thể là 1.2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97. Why is 1 not a prime number? 1 is not a prime number because it has only one factor, namely 1.

Bài Viết Liên Quan

Chủ Đề