मान लीजिए हमारे पास एक संख्या n है। हमें n से छोटी या बराबर सभी अभाज्य संख्याओं की सूची आरोही क्रम में बनानी है। ध्यान रखें कि 1 अभाज्य संख्या नहीं है।
उदाहरण के लिए, यदि इनपुट 12 है, तो आउटपुट होगा [2, 3, 5, 7, 11]
समाधान दृष्टिकोण (Sieve of Eratosthenes)
इसे हल करने के लिए हम निम्नलिखित चरणों का पालन करेंगे:
- sieve := आकार n+1 की एक सूची जिसे True से भरा गया है
- primes := एक नई खाली सूची
- i के लिए 2 से n तक की रेंज में:
- यदि sieve[i] True है, तो:
- i को primes के अंत में डालें
- j के लिए i से n तक चरण i में:
- sieve[j] := False
- यदि sieve[i] True है, तो:
- 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]