কম্পিউটার

C++ এ প্রাইম যোগ সহ সাবয়ারে গণনা করুন


আমরা ধনাত্মক পূর্ণসংখ্যার একটি অ্যারে দেওয়া হয়. লক্ষ্য হল একটি অ্যারেতে সংখ্যার সাববারেগুলি খুঁজে বের করা যাতে প্রতিটি সাবয়ারের প্রাইম হিসাবে যোগফল থাকে। যদি অ্যারেটি হয় { 1,2,3,4 }। তাহলে সাবয়ারে হবে {1,2}, {2,3}, {3,4}। এই ধরনের সাবয়ারের সংখ্যা 3।

আসুন উদাহরণ দিয়ে বুঝতে পারি

ইনপুট − arr[] ={1,3,5,3,2};

আউটপুট − প্রাইম যোগফল সহ সাবয়ারের সংখ্যা হল:3

ব্যাখ্যা − সাব্যারেগুলি হবে :{ 3,2} যোগফল =5 মৌলিক, {3,5,3} যোগফল =11 মৌলিক এবং {3,5,3,2} যোগফল 13 মৌলিক৷

ইনপুট − arr[] ={2,4,6};

আউটপুট − প্রাইম যোগফল সহ সাবয়ারের সংখ্যা হল:0

ব্যাখ্যা − সমস্ত সাবয়ারের অ-প্রধান যোগফল আছে। {2,4}=6, {4,6}=10

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

আমরা একটি চালুনি ব্যবহার করে সর্বোচ্চ মানের 107-এর চেয়ে কম সমস্ত মৌলিক সংখ্যা খুঁজে বের করব এবং এটিকে ভেক্টর চেকে সংরক্ষণ করব। যদি কোন সংখ্যা মৌলিক হয় তবে পরীক্ষা করুন [i] সত্য অন্যথা মিথ্যা। তারপরে লুপগুলির জন্য দুটি ব্যবহার করে অ্যারেটি অতিক্রম করুন, সাবয়ারের যোগফলের উপাদানগুলি যোগ করতে থাকুন এবং check[sum] ব্যবহার করে এটি প্রাইম কিনা তা পরীক্ষা করুন। যদি হ্যাঁ হয় তাহলে প্রাইম যোগ সহ সাবয়ারের জন্য গণনা বৃদ্ধি করুন।

  • ধনাত্মক পূর্ণসংখ্যার একটি অ্যারে অ্যারে নিন।

  • ফাংশন sub_prime(int arr[], int size) অ্যারে নেয় এবং যোগফল প্রাইম সহ সাবয়ারের গণনা প্রদান করে।

  • 0 হিসাবে প্রাথমিক গণনা নিন।

  • সর্বোচ্চ মান হিসাবে temp=pow(10,7) শুরু করুন।

  • সত্য দিয়ে ভেক্টর চেক শুরু করুন।

  • চেক[0] এবং চেক[1] মিথ্যা কারণ তারা নন-প্রাইম।

  • i=2 থেকে i*i

  • এখন ভেক্টর চেক[i] সত্য যদি i মৌলিক অন্যথায় মিথ্যা হয়।

  • ট্রাভার্স অ্যারে আবার লুপের জন্য দুটি ব্যবহার করে৷

  • সাব্যারেতে উপাদানের যোগফল হিসাবে পরিবর্তনশীল মোট নিন। Arr[i] থেকে arr[j]. যেখানে i=0 থেকে i

  • যদি কোন চেক [মোট] সত্য হয়. ( মোট যোগফল মৌলিক) সংখ্যা বৃদ্ধি।

  • ফলাফল হিসাবে সমস্ত লুপের শেষে গণনা করুন।

উদাহরণ

#include <bits/stdc++.h>
using namespace std;
int sub_prime(int arr[], int size){
   int count = 0;
   int temp = int(pow(10, 7));
   vector check(temp + 1, true);
   check[0] = false;
   check[1] = false;
   for (int i = 2; i * i <= temp; i++){
      if (check[i] == true){
         for (int j = i * 2; j <= temp; j += i){
            check[j] = false;
         }
      }
   }
   for (int i = 0; i < size - 1; ++i){
      int total = arr[i];
      for (int j = i + 1; j < size; ++j){
         total += arr[j];
         if (check[total]){
            ++count;
         }
      }
   }
   return count;
}
int main(){
   int arr[] = { 3, 5, 1, 9, 5 };
   int size = sizeof(arr) / sizeof(arr[0]);
   cout<<"Count of subarrays with Prime sum are: "<<sub_prime(arr, size);
   return 0;
}

আউটপুট

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

উৎপন্ন করবে
Count of subarrays with Prime sum are: 1

  1. C++ এ একটি সংখ্যা হিসাবে 0 সহ 'd' সংখ্যার ধনাত্মক পূর্ণসংখ্যা গণনা করুন

  2. C++ এ যোগফল S সহ মৌলিক P এর পরে মৌলিক সংখ্যা

  3. C++ এ 0 যোগ সহ সমস্ত সাবয়ারে প্রিন্ট করুন

  4. C++ এ K আকারের M নন-ওভারল্যাপিং সাবয়ারের সর্বোচ্চ যোগফল