ইনপুট হিসাবে আমাদের একটি ধনাত্মক সংখ্যা n দেওয়া হয়েছে। লক্ষ্য হল সম্ভাব্য জোড়ার (i,j) গণনা খুঁজে বের করা যাতে প্রতিটি জোড়ার যোগফল (i+j) থাকে যা মৌলিক এবং n-এর চেয়ে কম। এছাড়াও i !=j এবং i,j>=1 যদি n 4 হয় তবে শুধুমাত্র 1 জোড়া সম্ভব যা (1,2)। এখানে 1+2 =3 প্রাইম এবং 4 এর কম। এছাড়াও 1,2>=1।
আসুন উদাহরণ দিয়ে বুঝতে পারি।
ইনপুট − n=7
আউটপুট − মৌলিক সংখ্যা হিসাবে যোগফল সহ জোড়ার সংখ্যা এবং n-এর চেয়ে কম −3
ব্যাখ্যা − জোড়া হবে (1,2), (1,4), (2,3)। যোগফল 3, 5, 5 মৌলিক এবং 7 এর কম।
ইনপুট − n=10
আউটপুট − মৌলিক সংখ্যা হিসাবে যোগফল সহ জোড়ার সংখ্যা এবং n-এর চেয়ে কম হল −6
ব্যাখ্যা −
জোড়া হবে (1,2), (1,4), (2,3), (1,6), (2,5), (3,4)।
যোগফল 3, 5, 5, 7, 7, 7 মৌলিক এবং 10 এর কম।
নিম্নলিখিত প্রোগ্রামে ব্যবহৃত পদ্ধতি
এই পদ্ধতিতে আমরা প্রথমে ফাংশন check_prime(bool check[], int temp)-এ সিভ অফ সুন্দরম ব্যবহার করে n-এর চেয়ে কম সমস্ত মৌলিক সংখ্যা খুঁজে পাব।
এছাড়াও প্রতিটি বিজোড় সংখ্যা টেম্পের জন্য, সমষ্টি টেম্প আছে এমন স্বতন্ত্র জোড়ার গণনা হবে temp/2।
2 ব্যতীত সমস্ত মৌলিক সংখ্যাই বিজোড় তাই যদি আমরা n-এর থেকে কম কোন মৌলিক সংখ্যা পাই তাহলে জোড়া গণনার জন্য আমরা temp/2 যোগ করব।
-
ইনপুট হিসাবে ভেরিয়েবল n নিন।
-
ফাংশন prime_pair(int n) n নেয় এবং একটি মৌলিক সংখ্যা হিসাবে যোগফল এবং n এর চেয়ে কম যোগ সহ জোড়ার গণনা প্রদান করে।
-
0 হিসাবে প্রাথমিক গণনা নিন।
-
যেহেতু সুন্দরমের চালনি ইনপুট n এর জন্য 2*n+2 এর কম মৌলিক সংখ্যা তৈরি করে। আমরা n এর অর্ধেক কমিয়ে temp_2 এ সংরক্ষণ করি।
-
ফর্মের সমস্ত সংখ্যা ( i+j+2*i*j ) কে True হিসাবে চিহ্নিত করতে দৈর্ঘ্য temp_2 এর একটি অ্যারে চেক[] তৈরি করুন। মিথ্যা হিসাবে সমস্ত উপাদান দিয়ে এটি শুরু করুন৷
-
ফাংশন check_prime(bool check[], int temp) ব্যবহার করে, ফর্মের সংখ্যার (i+j+2*i*j) জন্য সত্য সহ চেক শুরু করুন। এবং এই যোগফল
-
এখন ইনডেক্স i=0 থেকে i
এর জন্য লুপ ব্যবহার করে চেক[] অতিক্রম করুন -
প্রতিটি চেকের জন্য [i] মিথ্যা হিসাবে, মৌলিক সংখ্যা হবে temp=2*i+1।
-
টেম্প পর্যন্ত যোগ করা জোড়া temp/2 হবে।
-
গণনা করতে টেম্প/2 যোগ করুন।
-
ফর লুপের শেষে আমাদের মোট জোড়া থাকবে যার যোগফল প্রাইম এবং n-এর চেয়ে কম হবে।
-
ফলাফল হিসাবে রিটার্ন গণনা।
উদাহরণ
#include <bits/stdc++.h> using namespace std; void check_prime(bool check[], int temp){ for (int i=1; i<=temp; i++){ for (int j=i; (i + j + 2*i*j) <= temp; j++){ check[i + j + 2*i*j] = true; } } } int prime_pair(int n){ int count = 0; int temp; int temp_2 = (n-2)/2; bool check[temp_2 + 1]; memset(check, false, sizeof(check)); check_prime(check, temp_2); for (int i=1; i <= temp_2; i++){ if (check[i] == false){ temp = 2*i + 1; count += (temp / 2); } } return count; } int main(){ int n = 10; cout<<"Count of pairs with sum as a prime number and less than n are: " <<prime_pair(n); return 0; }
আউটপুট
যদি আমরা উপরের কোডটি চালাই তবে এটি নিম্নলিখিত আউটপুট −
উৎপন্ন করবেCount of pairs with sum as a prime number and less than n are: 6