সমস্যা
একটি প্রদত্ত সংখ্যা দুটি মৌলিক সংখ্যার যোগফল হিসাবে প্রকাশ করা যায় কিনা তা খুঁজে বের করুন।
একটি ধনাত্মক পূর্ণসংখ্যা N দেওয়া হলে, N সংখ্যাটিকে দুটি মৌলিক সংখ্যার যোগফল হিসাবে উপস্থাপন করা যায় কিনা তা পরীক্ষা করতে হবে।
সমাধান
নিচে দেওয়া একটি উদাহরণ বিবেচনা করুন -
20 কে দুটি মৌলিক সংখ্যা 3 এবং 17, 13 এবং 7 এর যোগফল হিসাবে প্রকাশ করা যেতে পারে।
20=3+7
20=13+7
অ্যালগরিদম
দুটি মৌলিক সংখ্যার যোগফল হিসাবে একটি প্রদত্ত সংখ্যা প্রকাশ করার জন্য নীচে দেওয়া একটি অ্যালগরিদম দেখুন৷
ধাপ 1 - রান টাইমে চেক করা নম্বরটি ইনপুট করুন।
ধাপ 2 − i =2 থেকে (num/2) পর্যন্ত পুনরাবৃত্তি করুন।
ধাপ 3 - চেক করুন i একটি মৌলিক সংখ্যা।
ধাপ 4 − যদি আমি মৌলিক হয়, পরীক্ষা করুন (n - i) একটি মৌলিক সংখ্যা।
ধাপ 5 − যদি (i) এবং (n - i) উভয়ই প্রাইম হয়, তাহলে, প্রদত্ত সংখ্যাটিকে i এবং (n - i) এর সমষ্টি হিসাবে উপস্থাপন করা যেতে পারে।
উদাহরণ
একটি প্রদত্ত সংখ্যাকে দুটি মৌলিক সংখ্যার যোগফল −
হিসাবে প্রকাশ করার জন্য C প্রোগ্রামটি নিচে দেওয়া হল#include <stdio.h>
int Sum(int n);
int main(){
int num, i;
printf("Enter number: ");
scanf("%d", &num);
int flag = 0;
for(i = 2; i <= num/2; ++i){
if (sum(i) == 1){
if (sum(num-i) == 1){
printf("\nThe given %d can be expressed as the sum of %d and %d\n\n", num, i, num - i);
flag = 1;
}
}
}
if (flag == 0)
printf("The given %d cannot be expressed as the sum of two prime numbers\n", num);
return 0;
}
//check if a number is prime or not
int sum(int n){
int i, isPrime = 1;
for(i = 2; i <= n/2; ++i){
if(n % i == 0){
isPrime = 0;
break;
}
}
return isPrime;
} আউটপুট
যখন উপরের প্রোগ্রামটি কার্যকর করা হয়, তখন এটি নিম্নলিখিত আউটপুট তৈরি করে −
Run 1: Enter number: 34 The given 34 can be expressed as the sum of 3 and 31 The given 34 can be expressed as the sum of 5 and 29 The given 34 can be expressed as the sum of 11 and 23 The given 34 can be expressed as the sum of 17 and 17 Run 2: Enter number: 11 The given 11 cannot be expressed as the sum of two prime numbers