একটি প্রদত্ত পরিসরের মধ্যে মৌলিক সংখ্যা বের করতে চাকা চালনি পদ্ধতি ব্যবহার করা হয়। হুইল ফ্যাক্টরাইজেশন হল একটি গ্রাফিকাল পদ্ধতি যা ম্যানুয়ালি ইরাটোসথেনেসের চালনীতে একটি প্রাথমিক কাজ সম্পাদন করে যা কম্পোজিট থেকে মৌলিক সংখ্যাকে আলাদা করে।
এই পদ্ধতিতে, অন্তঃস্থ বৃত্তের মৌলিক সংখ্যাগুলির গুণিতকগুলি অন্যান্য বৃত্তের মতো একই অবস্থানে থাকে, যা মৌলিক সংখ্যা এবং তাদের গুণিতকগুলির স্পোক তৈরি করে। সবচেয়ে ভিতরের বৃত্তে এই মৌলিক সংখ্যাগুলির একাধিক বাইরের বৃত্তে যৌগিক সংখ্যার স্পোক তৈরি করে।
অ্যালগরিদম
Begin Define max number gen_sieve_primes() Declare c Assign c = 2 For p = 2 to max number If prime[p]==0 prime[p]=1 Mul = p multiply c For Mul less than max number prime[Mul] = -1 Increment c Mul = p multiply c Done Done Print_all_prime() Assign c=0 For i = 0 to max number if (prime[i] == 1) Increment c If c less than 4 Switch(c) Case 1 Print 1st prime number Case 2 Print 2nd prime number Case 3 Print 3rd prime number Else Print nth prime number End
উদাহরণ কোড
#include <iostream> using namespace std; #define MAX_NUMBER 40 int prime[MAX_NUMBER]; void gen_sieve_prime(void) { for (int p = 2; p < MAX_NUMBER; p++) { if (prime[p] == 0) prime[p] = 1; int c = 2; int mul = p * c; for (; mul < MAX_NUMBER;) { prime[mul] = -1; c++; mul = p * c; } } } void print_all_prime() { int c = 0; for (int i = 0; i < MAX_NUMBER; i++) { if (prime[i] == 1) { c++; if (c < 4) { switch (c) { case 1: cout << c << "st prime is: " << i << endl; break; case 2: cout << c << "nd prime is: " << i << endl; break; case 3: cout << c << "rd prime is: " << i << endl; break; default: break; } }else cout << c << "th prime is: " << i << endl; } } } int main() { gen_sieve_prime(); print_all_prime(); return 0; }
আউটপুট
1st prime is: 2 2nd prime is: 3 3rd prime is: 5 4th prime is: 7 5th prime is: 11 6th prime is: 13 7th prime is: 17 8th prime is: 19 9th prime is: 23 10th prime is: 29 11th prime is: 31 12th prime is: 37