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

C++-এ অ্যারে-তে প্রতিটি K-তম প্রাইম নম্বরের গুণফল

n প্রাইম নম্বর ধারণকারী একটি অ্যারে arr[n] এবং k দেওয়া আছে; কাজ হল অ্যারেতে প্রতিটি k-তম প্রাইম নম্বরের গুণফল বের করা।

যেমন, আমাদের একটি অ্যারে arr[] = {3, 5, 7, 11} এবং k = 2 আছে, তাহলে প্রতিটি k অর্থাৎ 5 এবং 11-র গুণফল বের করতে হবে যেটি 5x11 = 55 এবং আউটপুট হিসেবে প্রিন্ট করা হবে।

প্রাইম নম্বর কী?

প্রাইম নম্বর হল একটি প্রাকৃতিক সংখ্যা যা ১ এবং নিজস্ব নম্বর বাদে অন্য কোনো সংখ্যা দিয়ে বিভাজ্য নয়। কিছু প্রাইম নম্বর হল 2, 3, 5, 7, 11, 13 ইত্যাদি।

উদাহরণ

Input: arr[] = {3, 5, 7, 11, 13} k=2 
Output: 55 
Explanation: অ্যারেতে প্রতিটি ২য় উপাদান হল 5 এবং 11; তাদের গুণফল 55 
Input: arr[] = {5, 7, 13, 23, 31} k=3 
Output: 13 
Explanation: অ্যারেতে প্রতিটি ৩য় উপাদান হল 13 তাই আউটপুট 13।

সমাধানের পদ্ধতি:

  • n উপাদানের ইনপুট অ্যারে এবং k নিন প্রতি k-তম উপাদানের গুণফল বের করার জন্য।
  • প্রাইম নম্বর সংরক্ষণের জন্য একটি সিভ (sieve) তৈরি করুন।
  • তারপর অ্যারে ট্রভার্স করে k-তম উপাদান বের করুন এবং প্রোডাক্ট ভেরিয়েবলের সাথে গুণ করুন প্রতিটি k-তম উপাদানের জন্য।
  • গুণফল প্রিন্ট করুন।

অ্যালগরিদম

Start 
Step 1-> MAX 1000000 ডিক্লেয়ার ও আরম্ভ 
Step 2-> bool prime[MAX+1] ডিক্লেয়ার 
Step 3-> createsieve() ফাংশনে: 
    memset(prime, true, sizeof(prime)) 
    prime[1] = false, prime[0] = false 
    Loop p=2 to p*p<=MAX: 
        If prime[p] == true: 
            For i=p*2 to MAX step p: prime[i] = false 
Step 4-> productOfKthPrimes(int arr[], int n, int k): 
    c = 0, product = 1 
    Loop i=0 to n-1: 
        If prime[arr[i]]: c++ 
        If c%k == 0: product *= arr[i], c = 0 
    Print product 
Step 5-> main(): 
    Call createsieve() 
    n=5, k=2, arr[n] = {2, 3, 11, 13, 23} 
    Call productOfKthPrimes(arr, n, k) 
Stop

উদাহরণ

#include <bits/stdc++.h> 
using namespace std; 
#define MAX 1000000 
bool prime[MAX + 1]; 
void createsieve() { 
    memset(prime, true, sizeof(prime)); 
    prime[1] = false; 
    prime[0] = false; 
    for (int p = 2; p * p <= MAX; p++) { 
        if (prime[p] == true) { 
            for (int i = p * 2; i <= MAX; i += p) 
                prime[i] = false; 
        } 
    } 
} 
void productOfKthPrimes(int arr[], int n, int k) { 
    int c = 0; 
    long long int product = 1; 
    for (int i = 0; i < n; i++) { 
        if (prime[arr[i]]) { 
            c++; 
            if (c % k == 0) { 
                product *= arr[i]; 
                c = 0; 
            } 
        } 
    } 
    cout << product << endl; 
} 
int main() { 
    createsieve(); 
    int n = 5, k = 2; 
    int arr[n] = {2, 3, 11, 13, 23}; 
    productOfKthPrimes(arr, n, k); 
    return 0; 
}

আউটপুট

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

  2. C++ ব্যবহার করে মেরসেন প্রাইম সংখ্যা বের করা

  3. C++ প্রোগ্রাম: ফুল প্রাইম (Full Prime) চেক করা

  4. C++-এ গুণফল অ্যারে পাজল (Product Array Puzzle) সমাধান