ধরুন আমাদের একটি সীমা আছে। আমাদের 2 থেকে n রেঞ্জে উপস্থিত মৌলিক সংখ্যা গণনা করতে হবে। তাই n =10 হলে ফলাফল হবে 4। যেহেতু 10 এর আগে চারটি প্রাইম আছে, সেগুলি হল 2, 3, 5, 7।
এটি সমাধান করার জন্য, আমরা এই পদ্ধতি অনুসরণ করব -
- গণনা =0
- একটি অ্যারে প্রাইম =n + 1 আকারের নিন এবং এটি False দিয়ে পূরণ করুন
- এর জন্য i =0 থেকে n, করুন
- যদি prime[i] =মিথ্যা, তাহলে
- গণনা 1 দ্বারা বৃদ্ধি করুন
- জে =2 সেট করুন
- যখন j * i
- prime[i * j] =সত্য
- j =j + 1
- যদি prime[i] =মিথ্যা, তাহলে
উদাহরণ
আরো ভালোভাবে বোঝার জন্য নিচের বাস্তবায়নটি দেখি -
class Solution(object): def countPrimes(self, n): """ :type n: int :rtype: int """ count = 0 primes = [False for i in range(n+1)] for i in range(2,n): if primes[i] == False: count+=1 j = 2 while j*i<n: primes[j*i] = True j+=1 return count ob1 = Solution() print(ob1.countPrimes(50)) print(ob1.countPrimes(10))
ইনপুট
n = 50 n = 10
আউটপুট
15 4