สมมติว่าเรามีตัวเลข n เราต้องสร้างรายการของจำนวนเฉพาะทั้งหมดที่น้อยกว่าหรือเท่ากับ n ในลำดับเพิ่มขึ้น ต้องจำไว้ว่า 1 ไม่ใช่จำนวนเฉพาะ
ตัวอย่าง
หากอินพุตคือ 12 ผลลัพธ์จะเป็น [2, 3, 5, 7, 11]
ขั้นตอนการแก้ปัญหา (Sieve of Eratosthenes)
sieve:= รายการขนาดn+1เติมด้วยTrueprimes:= รายการใหม่ เริ่มต้นว่าง- ลูป
iจาก 2 ถึงn:- ถ้า
sieve[i]เป็นTrue:- เพิ่ม
iเข้าprimes - ลูป
jจากiถึงnเพิ่มทีละi:sieve[j]:=False
- เพิ่ม
- ถ้า
- คืนค่า
primes
การใช้งาน
class Solution:
def solve(self, n):
sieve = [True] * (n + 1)
primes = []
for i in range(2, n + 1):
if sieve[i]:
primes.append(i)
for j in range(i, n + 1, i):
sieve[j] = False
return primes
ob = Solution()
print(ob.solve(12))
อินพุต
12
เอาต์พุต
[2, 3, 5, 7, 11]