কম্পিউটার টিউটোরিয়াল

C++ প্রোগ্রাম: হুইল ছাঁনি বাস্তবায়ন করে নির্দিষ্ট পরিসরের মৌলিক সংখ্যা তৈরি


হুইল ছাঁনি (Wheel Sieve) পদ্ধতি দত্তক পরিসরের মৌলিক সংখ্যা বের করতে ব্যবহৃত হয়। হুইল ফ্যাক্টরাইজেশন হল এরাটোস্থেনিসের ছাঁনির প্রারম্ভিক ধাপ হিসেবে ম্যানুয়ালি সম্পাদন করার একটি গ্রাফিক্যাল পদ্ধতি যা মৌলিক সংখ্যাকে কম্পোজিট থেকে পৃথক করে।

এই পদ্ধতিতে, ইনারমোস্ট সার্কেলের মৌলিক সংখ্যাগুলোর গুণফলগুলো অন্য সার্কেলে একই পজিশনে থাকে, যা মৌলিক সংখ্যা এবং তাদের গুণফলের স্পোক (spoke) বানায়। ইনারমোস্ট সার্কেলের এই মৌলিক সংখ্যাগুলোর গুণফল আউটার সার্কেলে কম্পোজিট সংখ্যার স্পোক বানায়।

অ্যালগরিদম

শুরু
    সর্বোচ্চ সংখ্যা ডিফাইন করুন
    gen_sieve_primes()
        c ঘোষণা করুন
        c = 2 অ্যাসাইন করুন
        p = 2 থেকে max number পর্যন্ত
            যদি prime[p] == 0
                prime[p] = 1
                Mul = p * c
                Mul < max number পর্য্দ
                    prime[Mul] = -1
                    c বাড়ান
                    Mul = p * c
                শেষ
            শেষ
        Print_all_prime()
            c = 0 অ্যাসাইন করুন
            i = 0 থেকে max number পর্যন্ত
                যদি (prime[i] == 1)
                    c বাড়ান
                যদি c < 4
                    Switch(c)
                        Case 1: ১ম মৌলিক সংখ্যা প্রিন্ট করুন
                        Case 2: ২য় মৌলিক সংখ্যা প্রিন্ট করুন
                        Case 3: ৩য় মৌলিক সংখ্যা প্রিন্ট করুন
                অন্যথায়
                    nth মৌলিক সংখ্যা প্রিন্ট করুন
শেষ

উদাহরণ কোড

#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
  1. C++ প্রোগ্রাম: অ্যাটকিনের ছাঁনি বাস্তবায়ন করে নির্দিষ্ট পরিসরের মৌলিক সংখ্যা তৈরি

  2. C++ প্রোগ্রাম: এরাটোস্থেনিসের ছাঁনি বাস্তবায়ন করে নির্দিষ্ট পরিসরের মৌলিক সংখ্যা তৈরি

  3. ফাংশন ব্যবহার করে দুটি अन्तরালের মাঝপথে প্রাইম নম্বর প্রদর্শনের C++ প্রোগ্রাম

  4. দুই अन्तরালের মাঝপথে প্রাইম নম্বর প্রদর্শনের C++ প্রোগ্রাম (ফাংশন ভিন্ন নাম)