এই সমস্যায়, একটি পূর্ণসংখ্যা N দেওয়া থাকে এবং N-এর চেয়ে ছোট সব সেফ প্রাইম নম্বর প্রিন্ট করতে হবে।
একটি সেফ প্রাইম নম্বর হলো এমন একটি প্রাইম নম্বর जिसे [(2×p) + 1] ফর্মুলা দিয়ে প্রকাশ করা যায়, যেখানে p ও একটি প্রাইম নম্বর।
উদাহরণ: 5[(2×2)+1], 7[(2×3)+1]।
কয়েকটি উদাহরণ দিয়ে সমস্যাটি বুঝি:
ইনপুট: N = 12 আউটপুট: 5 7 11
এই সমস্যাটি সমাধান করার জন্য, আমরা N-এর চেয়ে ছোট সব প্রাইম নম্বর খুঁজে বের করব (এravo এρατοস্থেনিসের ছাঁনি বা Sieve of Eratosthenes ব্যবহার করে)। এবং চেক করব যে প্রাইম নম্বরটি সেফ প্রাইম নম্বর কিনা এবং যদি হয় তবে প্রিন্ট করব।
C++ উদাহরণ
#include <bits/stdc++.h> using namespace std; void printPrime(int n){ cout<<n<<"\t"; } void generateSafePrimes(int n){ int prime[n + 1]; for (int i = 2; i <= n; i++) prime[i] = 1; prime[0] = prime[1] = 0; for (int p = 2; p * p <= n; p++) { if (prime[p] == 1) { for (int i = p * 2; i <= n; i += p) prime[i] = 0; } } for (int i = 2; i <= n; i++) { if (prime[i] != 0) { int temp = (2 * i) + 1; if (temp <= n && prime[temp] != 0) prime[temp] = 2; } } for (int i = 5; i <= n; i++) if (prime[i] == 2) printPrime(i); } int main(){ int n = 34; cout<<"safe Prime numbers less than "<<n<<" are :\n"; generateSafePrimes(n); return 0; }আউটপুট
৩৪-এর চেয়ে ছোট সেফ প্রাইম নম্বরগুলো হলো:
5 7 11 23