আমাদের মৌলিক সংখ্যার একটি অ্যারে দেওয়া হয়েছে, যা এলোমেলো ক্রমে সাজানো হয়েছে। অ্যারের আকার হল N। লক্ষ্য হল অ্যারের মধ্যে সংলগ্ন মৌলিক সংখ্যার দীর্ঘতম ক্রম খুঁজে বের করা।
প্রধান সংখ্যা হল এমন একটি যার মাত্র দুটি গুণনীয়ক আছে, 1 এবং সংখ্যাটি নিজেই। 1,2,3,5,7,11,13.... মৌলিক সংখ্যা যেখানে 4,6,8,9,10….20 হল নন-প্রাইম। প্রতিটি নন-প্রাইম নম্বরে 2টির বেশি ফ্যাক্টর থাকে। উদাহরণ দিয়ে বোঝা যাক।
ইনপুট − Arr[] ={ 1,3,5,2,6,7,13,4,9,10
আউটপুট − 3
ব্যাখ্যা − উপরের অ্যারের মৌলিক সংখ্যা হল 3,5,2,7,13। সংলগ্ন সংখ্যাগুলি হল 3,5,2 এবং 7,13। দীর্ঘতম ক্রমটিতে 3টি সংখ্যা রয়েছে। সুতরাং উত্তর হল 4.
ইনপুট − Arr[] ={ 5,7,17,27,31,21,41}।
আউটপুট − 3
ব্যাখ্যা − উপরের অ্যারের মৌলিক সংখ্যা হল 5,7,17,31,41। সংলগ্ন সংখ্যাগুলি হল 5,7,17। দীর্ঘতম ক্রমটিতে 3টি সংখ্যা রয়েছে। সুতরাং উত্তর হল 3.
নিম্নলিখিত প্রোগ্রামে ব্যবহৃত পদ্ধতি
-
পূর্ণসংখ্যা অ্যারে Arr[] প্রাইম এবং নন-প্রাইম সংখ্যা সংরক্ষণ করতে ব্যবহৃত হয়।
-
ফাংশন isprime(int num) সংখ্যাটি প্রাইম কিনা তা পরীক্ষা করতে ব্যবহৃত হয়। যদি এটি প্রাইম হয় তবে অর্ধেক না পৌঁছানো পর্যন্ত এটির কোন ফ্যাক্টর থাকতে হবে।
-
মৌলিক সংখ্যার জন্য isprime() 1 প্রদান করে অন্যথায় এটি 0 প্রদান করে।
-
ফাংশন primeSubarray(int arr[], int n) দুটি ইনপুট প্যারামিটার নেয়। সংখ্যার অ্যারে নিজেই, এর আকার। সংলগ্ন মৌলিক সংখ্যার দীর্ঘতম অনুক্রমের আকার প্রদান করে।
-
শুরু থেকে arr[]-এ সংখ্যাগুলি অতিক্রম করুন। যদি arr[i] নন-প্রাইম হয় ( isprime(arr[i])==0)। তারপর 0 হিসাবে সংলগ্ন মৌলিক সংখ্যার গণনা পরিবর্তন করুন।
-
যদি এটি মৌলিক হয়, তাহলে মৌলিক সংখ্যার সংখ্যা বৃদ্ধি করুন। (ননপ্রাইমের সম্মুখীন হলে এটি আবার 0 থেকে শুরু হবে)
-
এখন পর্যন্ত গণনা সর্বাধিক কিনা তা পরীক্ষা করুন, যদি হ্যাঁ সঞ্চয় করেন তবে এটি maxC-তে মান।
-
ফলাফল হিসাবে maxC ফেরত দিন।
উদাহরণ
#include#include int isprime(int num){ if (num <=1) রিটার্ন 0; জন্য (int i =2; i <=num/2; i++) যদি (num % i ==0) 0 ফেরত দেয়; রিটার্ন 1; //যদি উভয়ই ব্যর্থ হয় তাহলে num হল prime}int primeSubarray(int arr[], int n){int count=0; int maxSeq=0; for (int i =0; i maxSeq?count:maxSeq; } } রিটার্ন maxSeq;}int main(){int arr[] ={ 8,4,2,1,3,5,7,9}; int n =8; printf("একটি অ্যারেতে সংলগ্ন প্রাইম সংখ্যার সর্বোচ্চ সংখ্যা:%d", primeSubarray(arr, n)); রিটার্ন 0;
আউটপুট
যদি আমরা উপরের কোডটি চালাই তবে এটি নিম্নলিখিত আউটপুট −
উৎপন্ন করবে <পূর্ব>সর্বোচ্চ নম্বর একটি অ্যারেতে সংলগ্ন প্রাইম নম্বরের :3