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

C++-এ n-এর চেয়ে ছোট মুক্তিক সংখ্যা যোগফল বিশিষ্ট জোড়া সংখ্যা গণনা


আমাদের একটি ধনাত্মক সংখ্যা n ইনপুট হিসেবে দেওয়া হয়েছে। লক্ষ্য হল এমন জোড়া (i, j) এর সংখ্যা বের করা যাতে i + j একটি মুক্তিক সংখ্যা হয় এবং সেটি n-এর চেয়ে ছোট। এছাড়া i != j এবং i, j >= 1।

যদি n = 4 হয়, তবে শুধু একটি জোড়া সম্ভব: (1, 2) কারণ 1+2=3 যা মুক্তিক এবং ৪-এর চেয়ে ছোট।

উদাহরণ

ইনপুট: n = 7

আউটপুট: ৩

ব্যাখ্যা: জোড়াগুলো: (1,2), (1,4), (2,3)। যোগফল: ৩, ৫, ৫ — সব মুক্তিক এবং ৭-এর চেয়ে ছোট।

ইনপুট: n = 10

আউটপুট: ৬

ব্যাখ্যা: জোড়াগুলো: (1,2), (1,4), (2,3), (1,6), (2,5), (3,4)। যোগফল: ৩, ৫, ৫, ৭, ৭, ৭।

অ্যালগরিদম (Sieve of Sundaram)

  1. ভেরিয়েবল n ইনপুট নিন।
  2. prime_pair(int n) ফাংশনটি জোড়া সংখ্যা ফেরত দেবে।
  3. প্রাথমিক কাউন্ট ০।
  4. Sieve of Sundaram ইনপুট n-এর জন্য 2*n+2 পর্যন্ত মুক্তিক সংখ্যা দেয়। তাই n-কে অর্ধেক করে temp_2 = (n-2)/2 সংরক্ষণ করুন।
  5. Check[] অ্যারে তৈরি করুন দৈর্ঘ্য temp_2 এবং সব এলিমেন্ট false দিয়ে ইনিশিয়ালাইজ করুন।
  6. check_prime(bool check[], int temp) ফাংশনে i+j+2*i*j রূপের সংখ্যাগুলো true চিহ্নিত করুন।
  7. Check[] ট্রাভার্স করুন: যেসব ইনডেক্সে false আছে, সেসবके জন্য মুক্তিক সংখ্যা temp = 2*i + 1।
  8. যে মুক্তিক সংখ্যা পাওয়া যাবে, তার জন্য ভিন্ন জোড়া সংখ্যা হবে temp/2। এটি কাউন্টে যোগ করুন।
  9. লুপ শেষে মোট জোড়া সংখ্যা ফেরত দিন।

C++ বাস্তবায়ন

#include <bits/stdc++.h>
using namespace std;

void check_prime(bool check[], int temp) {
    for (int i = 1; i <= temp; i++) {
        for (int j = i; (i + j + 2*i*j) <= temp; j++) {
            check[i + j + 2*i*j] = true;
        }
    }
}

int prime_pair(int n) {
    int count = 0;
    int temp;
    int temp_2 = (n - 2) / 2;
    bool check[temp_2 + 1];
    memset(check, false, sizeof(check));
    check_prime(check, temp_2);
    for (int i = 1; i <= temp_2; i++) {
        if (check[i] == false) {
            temp = 2*i + 1;
            count += (temp / 2);
        }
    }
    return count;
}

int main() {
    int n = 10;
    cout << "Count of pairs with sum as a prime number and less than n are: " << prime_pair(n);
    return 0;
}

আউটপুট

Count of pairs with sum as a prime number and less than n are: 6
  1. সি++-এ জোড় ও বিজোড় গুণফল বালা অর্ডার্ড পেয়ার গণনা

  2. সি++-এ ম্যাট্রিক্সে কলামের যোগফল রোয়ের যোগফলের চেয়ে বড় হয় এমন ইনডেক্স পেয়ার গণনা

  3. সংখ্যার চেয়ে ছোট সব প্রাইম কোয়াড্রাপলেট প্রিন্ট করা C++-তে

  4. C++-এ Y-র চেয়ে ছোট নম্বর দিয়ে মিনিমাম সেট বের করা