প্রদত্ত কাজটি হল একটি সংখ্যার [1, N] পরিসরে যেখানে N দেওয়া আছে সেখানে সর্বাধিক সংখ্যক অনন্য মৌলিক গুণনীয়ক খুঁজে বের করা।
আসুন এখন বুঝতে পারি একটি উদাহরণ ব্যবহার করে আমাদের কী করতে হবে −
ইনপুট − N=100
আউটপুট৷ − 3
ব্যাখ্যা − চলুন 30 নিই [1, 100]
এর পরিসরে30 =3 * 2 * 5 =অনন্য মৌলিক গুণনীয়ক। অতএব, [1, 100] পরিসরে সর্বাধিক 3টি অনন্য কারণ পাওয়া যেতে পারে।
ইনপুট − N=300
আউটপুট − 4
নিম্নলিখিত প্রোগ্রামে ব্যবহৃত পদ্ধতি
-
MaxPrime() ফাংশনে আমরা প্রথমে পরীক্ষা করব কিনা (N <2)। যদি তাই হয় তবে কেবল শূন্য দিন, অন্যথায় এগিয়ে যান।
-
তারপর আমরা প্রদত্ত সংখ্যা N এর পূর্বে সমস্ত মৌলিক সংখ্যা বের করতে ইরাটোসথেনিসের চালুনি ব্যবহার করব।
-
পণ্য এবং চূড়ান্ত উত্তর যথাক্রমে সংরক্ষণ করতে দুটি ভেরিয়েবল pro=1 এবং max=0 টাইপ int শুরু করুন।
-
Eratosthenes-এর চালনির ভিতরে আমরা মৌলিক সংখ্যার প্রথম সেটটিকে গুণ করব যতক্ষণ না গুণফল N-এর থেকে ছোট থাকে − pro=*p;
লিখে। -
পরীক্ষা করুন যদি (pro> N)। যদি তাই হয় তাহলে সর্বোচ্চ ফেরত দিন এবং সর্বোচ্চ 1 যোগ করুন।
-
চালনির বাইরে, সর্বাধিক ফেরত দিন।
উদাহরণ
#include <bits/stdc++.h>
using namespace std;
int MaxPrime(int N){
if (N < 2)
return 0;
// Using Sieve of Eratosthenes
bool Arr[N+1];
memset(Arr, true, sizeof(Arr));
int pro = 1, max = 0;
for (int p=2; p*p<=N; p++){
if (Arr[p] == true){
for (int i=p*2; i<=N; i += p)
Arr[i] = false;
/*Multiply first set of prime numbers while product remains smaller than N*/
pro *= p;
if (pro > N)
return max;
max++;
}
}
return max;
}
//Main function
int main(){
int N = 300;
cout << MaxPrime(N);
return 0;
} আউটপুট
আমরা উপরের কোডটি চালালে আমরা নিম্নলিখিত আউটপুট পাব −
4