কম্পিউটার

C++ এ প্রাইম পয়েন্ট (বিন্দু যেগুলো একটি সংখ্যাকে দুটি প্রাইমে বিভক্ত করে)


এই সমস্যায়, আমাদের একটি সংখ্যা দেওয়া হয়েছে। আমাদের কাজ হল সংখ্যার সমস্ত মৌলিক বিন্দু প্রিন্ট করা অন্যথায় -1 প্রিন্ট করা, যদি কোন মৌলিক বিন্দু না থাকে।

প্রধান পয়েন্ট সেই সূচক মানগুলি যা সংখ্যাটিকে দুটি মৌলিক সংখ্যায় বিভক্ত করে, একটি বাম দিকে এবং অন্যটি ডানদিকে৷

সমস্যাটি বোঝার জন্য একটি উদাহরণ নেওয়া যাক

Input: 2359
Output: 1

ব্যাখ্যা :সূচক 1 এ সংখ্যাটি ভাগ করলে। আমরা দুটি মৌলিক সংখ্যা হিসাবে 2 এবং 59 পাব।

এই সমস্যাটি সমাধান করার জন্য, আমরা সংখ্যার জন্য বাম-ডান বিভাজন সম্ভব কিনা তা পরীক্ষা করব। যদি এটি বৈধ হয়, আমরা সংখ্যার সমস্ত সংমিশ্রণ চেষ্টা করব যা তৈরি করা যেতে পারে এবং সেগুলি মৌলিক কিনা তা পরীক্ষা করব। যদি তারা প্রাইম হয়, সূচক প্রিন্ট করুন।

নীচের কোডটি আমাদের সমাধানের বাস্তবায়ন দেখায়

উদাহরণ

#include <bits/stdc++.h>
using namespace std;
int countDigits(int n) {
   int count = 0;
   while (n > 0){
      count++;
      n = n/10;
   }
   return count;
}
int checkPrime(int n) {
   if (n <= 1)
      return -1;
   if (n <= 3)
      return 0;
   if (n%2 == 0 || n%3 == 0)
      return -1;
   for (int i=5; i*i<=n; i=i+6)
      if (n%i == 0 || n%(i+2) == 0)
         return -1;
   return 0;
}
void primePoints(int n) {
   int count = countDigits(n);
   if (count==1 || count==2){
      cout << "-1";
      return;
   }
   bool found = false;
   for (int i=1; i<(count-1); i++){
      int left = n / ((int)pow(10,count-i));
      int right = n % ((int)pow(10,count-i-1));
      if (checkPrime(left) == 0 && checkPrime(right) == 0){
         cout<<i<<"\t";
         found = true;
      }
   }
   if (found == false)
   cout << "-1";
}
int main() {
   int N = 2359;
   cout<<"All prime divisions of number "<<N<<" are :\n";
   primePoints(N);
   return 0;
}

আউটপুট

All prime divisions of number 2359 are :
1

  1. C++ এ Mersenne প্রাইম নম্বর।

  2. C++ এ পাটিগণিত সংখ্যা

  3. একটি গ্রাফে আর্টিকুলেশন পয়েন্টের সংখ্যা খুঁজে পেতে C++ প্রোগ্রাম

  4. C++ এ CHAR_BIT