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

C++-এ অ্যারেতে কম্পোজিট উপাদান গণনা ও যোগফল

আমাদের ধনাত্মক পূর্ণসংখ্যার একটি অ্যারে দেওয়া আছে এবং আমাদের কাজ হল দেওয়া অ্যারেতে কম্পোজিট উপাদানগুলির গণনা ও যোগফল বের করা।

কম্পোজিট সংখ্যা কী?

দেওয়া পূর্ণসংখ্যা সেট থেকে যেসব সংখ্যা প্রাইম নয় সেগুলোকে কম্পোজিট সংখ্যা বলা হয়, ১ বাদে যা না প্রাইম ন কম্পোজিট বরং একটি ইউনিট নম্বর। তাই স্পষ্টভাবে একটি সংখ্যা হয় প্রাইম অথবা কম্পোজিট, ১ ছাড়া।

১০০ পর্যন্ত কম্পোজিট সংখ্যাগুলো নিচে দেওয়া হল −

4, 6, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 22, 24, 25, 26, 27, 28, 30, 32, 33, 34, 35, 36, 38, 39, 40, 42, 44, 45, 46, 48, 49, 50, 51, 52, 54, 55, 56, 57, 58, 60, 62, 63, 64, 65, 66, 68, 69, 70, 72, 74, 75, 76, 77, 78, 80, 81, 82, 84, 85, 86, 87, 88, 90, 91, 92, 93, 94, 95, 96, 98, 99, 100

উদাহরণ

ইনপুট − array[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10} আউটপুট − কম্পোজিট সংখ্যার মোট গণনা: 5       কম্পোজিট সংখ্যার যোগফল: 37

ব্যাখ্যা − 4, 6, 8, 9, 10 হল অ্যারেতে থাকা কম্পোজিট সংখ্যাগুলো। তাই গণনা 5 এবং যোগফল 4+6+8+9+10 = 37।

ইনপুট − array[] = {1, 2, 3, 4, 5} আউটপুট − কম্পোজিট সংখ্যার মোট গণনা: 1       কম্পোজিট সংখ্যার যোগফল: 4

ব্যাখ্যা − 4 একমাত্র কম্পোজিট সংখ্যা অ্যারেতে। তাই গণনা 1 এবং যোগফল 4।

প্রোগ্রামে ব্যবহৃত পদ্ধতি

  • পূর্ণসংখ্যার অ্যারে ইনপুট নিন
  • তার আকার গণনা করুন
  • sum ভেরিয়েবল আরম্ভ করুন কম্পোজিট সংখ্যার যোগফল সংরক্ষণ করতে
  • অ্যারেতে থাকা সর্বোচ্চ মান একটি ভেরিয়েবলে সংরক্ষণ করুন
  • সর্বোচ্চ মান পর্যন্ত প্রাইম সংখ্যা গণনা করুন
  • পুরো অ্যারে ট্রাভার্স করুন এবং চেক করুন সংখ্যাটি প্রাইম কিনা। যদি প্রাইম না হয় তবে কম্পোজিট হবে এবং তখন কম্পোজিট গণনা 1 বৃদ্ধি করুন এবং তার মান sum-এ যোগ করুন

উদাহরণ কোড

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

// কম্পোজিট সংখ্যার গণনা ফেরত দেওয়া ফাংশন
int compcount(int ar[], int num, int* sum) {
    // অ্যারেতে সর্বোচ্চ উপাদান সংরক্ষণ
    int max_val = *max_element(ar, ar + num);
    
    // সিভ ব্যবহার করে max_val পর্যন্ত সব প্রাইম সংখ্যা খুঁজুন
    // একটি বুলিয়ান অ্যারে "prime[0..n]"। prime[i] অবশেষে false হবে
    // যদি i প্রাইম না হয়, অন্যথায় true।
    vector<bool> pr(max_val + 1, true);
    // 0 এবং 1-এর মান true সেট করুন প্রাইম হিসেবে
    pr[0] = true;
    pr[1] = true;
    for (int p = 2; p * p <= max_val; p++) {
        // যদি prime[p] পরিবর্তন না হয়, তবে এটি প্রাইম
        if (pr[p] == true) {
            // p-এর সব গুণক আপডেট করুন
            for (int i = p * 2; i <= max_val; i += p) {
                pr[i] = false;
            }
        }
    }
    
    // সব কম্পোজিট সংখ্যা গণনা করুন
    int ans = 0;
    for (int i = 0; i < num; i++) {
        if (!pr[ar[i]]) {
            ans++;
            *sum = *sum + ar[i];
        }
    }
    return ans;
}

// Driver code
int main() {
    int ar[] = { 1, 2, 3, 4, 5 };
    int num = sizeof(ar) / sizeof(ar[0]);
    int sum = 0;
    cout << "Count of Composite Numbers = " << compcount(ar, num, &sum);
    cout << "\nSum of Composite Numbers = " << sum;
    return 0;
}

আউটপুট

যদি আমরা উপরের কোডটি রান করি তবে নিচের আউটপুট পাব −

Count of Composite Numbers = 1 Sum of Composite Numbers = 4
  1. C++-এ সোর্টেড অ্যারেতে ছোট এলিমেন্ট গণনা

  2. C++-এ অ্যারেতে জোড় ও বিজোড় উপাদান গণনা (Count Even and Odd Elements in Array)

  3. C++ STL-এ অ্যারে যোগফল (Array Sum)

  4. C++ সম অ্যারে পাজল (Sum Array Puzzle)