সমস্যা
একটি দেওয়া সংখ্যা দুটি মৌলিক সংখ্যার যোগফল হিসেবে প্রকাশ করা সম্ভব কিনা তা বের করুন।
একটি ধনাত্মক পূর্ণসংখ্যা N দেওয়া আছে, আমাদের চেক করতে হবে যে N কি দুটি মৌলিক সংখ্যার যোগফল হিসেবে রিপ্রেজেন্ট করা যায়।
সমাধান
নিচের উদাহরণটি বিবেচনা করুন:
২০ = ৩ + ১৭, ১৩ + ৭।
২০ = ৩ + ১৭
২০ = ১৩ + ৭
অ্যালগরিদম
একটি দেওয়া সংখ্যাকে দুটি মৌলিক সংখ্যার যোগফল হিসেবে প্রকাশ করার অ্যালগরিদম নিচে দেওয়া হলো:
স্টেপ ১ - রানটাইমে চেক করার জন্য সংখ্যাটি ইনপুট নিন।
স্টেপ ২ - i = 2 থেকে (num/2) পর্যন্ত রিপিট করুন।
স্টেপ ৩ - i মৌলিক সংখ্যা কিনা চেক করুন।
স্টেপ ৪ - যদি i মৌলিক হয়, তবে (n - i) মৌলিক কিনা চেক করুন।
স্টেপ ৫ - যদি (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