ধারণা
প্রদত্ত ধনাত্মক সংখ্যা n এর ক্ষেত্রে, কাজটি হল n একটি আদি মৌলিক সংখ্যা কিনা তা যাচাই করা। আমাদের 'হ্যাঁ' প্রিন্ট করতে হবে যদি n একটি আদি মৌলিক সংখ্যা হয় অন্যথায় 'না' প্রিন্ট করুন।
প্রাইমোরিয়াল প্রাইম − গণিতের সাপেক্ষে, প্রাইমোরিয়াল প্রাইমকে pN# + 1 বা pN# – 1 ফর্মের একটি মৌলিক সংখ্যা হিসাবে সংজ্ঞায়িত করা হয়, যেখানে pN# হল pN এর আদিম যেমন প্রথম N মৌলিক সংখ্যার গুণফল। পি>
ইনপুট − n =7
আউটপুট - হ্যাঁ
7 হল N=2 এর জন্য pN + 1 ফর্মের প্রাইমোরিয়াল প্রাইম, প্রাইমোরিয়াল হল 2*3 =6 এবং 6+1 =7।
ইনপুট − n =29
আউটপুট - হ্যাঁ
29 হল N=3 এর জন্য pN - 1 ফর্মের প্রাইমোরিয়াল প্রাইম, প্রাইমোরিয়াল হল 2*3*5 =30 এবং 30-1 =29৷
নিম্নলিখিতটিতে, প্রথম কয়েকটি প্রাইমোরিয়াল প্রাইম প্রদর্শিত হয় − 2, 3, 5, 7, 29, 31, 211, 2309, 2311, 30029
পন্থা
-
আমাদের ইরাটোস্থেনের চালনি প্রয়োগ করে পরিসরের সমস্ত মৌলিক সংখ্যা তৈরি করতে হবে।
-
N প্রাইম কিনা যাচাই করুন, যদি N প্রাইম না হয়, তাহলে No
প্রিন্ট করুন -
অন্যথায়, প্রথম প্রাইম (অর্থাৎ 2) থেকে শুরু করে পরবর্তী মৌলিক সংখ্যাকে গুণ করা শুরু করুন এবং গুণফল + 1 =N বা গুণফল – 1 =N বা না কিনা তা যাচাই করতে থাকুন
-
এটা দেখা গেছে যে যদি পণ্য+1=N বা পণ্য-1=N হয়, তাহলে N হল প্রাইমোরিয়াল প্রাইম অন্যথায় নয়।
উদাহরণ
// CPP program to check Primorial Prime #include <bits/stdc++.h> using namespace std; #define MAX 10000 vector<int> arr1; bool prime1[MAX]; void SieveOfEratosthenes1(){ memset(prime1, true, sizeof(prime1)); for (int p = 2; p * p < MAX; p++) { if (prime1[p] == true) { for (int i = p * 2; i < MAX; i += p) prime1[i] = false; } } for (int p = 2; p < MAX; p++) if (prime1[p]) arr1.push_back(p); } bool isPrimorialPrime1(long n){ // If n is not prime Number // return flase if (!prime1[n]) return false; long long product1 = 1; int i = 0; while (product1 < n) { product1 = product1 * arr1[i]; if (product1 + 1 == n || product1 - 1 == n) return true; i++; } return false; } // Driver code int main(){ SieveOfEratosthenes1(); long n = 29; // Check if n is Primorial Prime if (isPrimorialPrime1(n)) cout << "YES\n"; else cout << "NO\n"; return 0; }
আউটপুট
YES