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

সি/সি++-এ n ছোট সব প্রাইম নাম্বার বের করার একটি দিলচস্প সমাধান

এখানে আমরা দেখব কিভাবে n-র চেয়ে ছোট সব প্রাইম নাম্বার দক্ষতার সাথে জেনারেট করা যায়। এই পদ্ধতিতে উইলসনের থিওরেম (Wilson's theorem) ব্যবহার করা হয়। তার থিওরেম অনুযায়ী, যদি একটি সংখ্যা k প্রাইম হয়, তবে ((k - 1)! + 1) mod k = 0 হবে। এই আইডিয়ার অ্যালগরিদম নিচে দেওয়া হলো।

এই আইডিয়া সরাসরি সি বা সি++-এ কাজ করবে না, কারণ বড় ইন্টিজার সাপোর্ট করে না। ফ্যাক্টোরিয়াল খুব বড় সংখ্যা জেনারেট করে।

অ্যালগরিদম

genAllPrime(n)

শুরু
    fact := 1
    i = 2 থেকে n-1 পর্যন্ত লুপ চালাও
        fact := fact * (i - 1)
        যদি (fact + 1) mod i == 0 হয়, তবে
            i প্রিন্ট করো
        শেষ যদি
    লুপ শেষ
শেষ

উদাহরণ কোড

#include <iostream>
using namespace std;
void genAllPrimes(int n) {
    int fact = 1;
    for (int i = 2; i < n; i++) {
        fact = fact * (i - 1);
        if ((fact + 1) % i == 0) {
            cout << i << " ";
        }
    }
}
int main() {
    int n = 10;
    genAllPrimes(n);
    return 0;
}

আউটপুট

2 3 5 7
  1. ফর লুপ ব্যবহার করে ১ থেকে N পর্যন্ত প্রাইম নম্বর প্রিন্ট করার সি প্রোগ্রাম

  2. C++-তে অ্যারেতে থাকা সব প্রাইম নম্বরের গুণফল বের করা

  3. পাইথন প্রোগ্রাম একটি ইন্টারভালের সব প্রাইম নম্বর প্রিন্ট করা

  4. Python-এ একটি ইন্টারভ্যালে সকল প্রাইম নম্বর প্রিন্ট করা