কম্পিউটার

প্রদত্ত সংখ্যাটি C++ এ প্রথম n স্বাভাবিক সংখ্যার যোগফল কিনা তা খুঁজুন


এই সমস্যায়, আমাদের একটি নম্বর দেওয়া হয়। আমাদের কাজ হল প্রদত্ত সংখ্যাটি প্রথম n প্রাকৃতিক সংখ্যার যোগফল কিনা তা খুঁজে বের করা।

সমস্যা বর্ণনা: এখানে, আমাদের পরীক্ষা করতে হবে যে প্রদত্ত সংখ্যাটি প্রথম n স্বাভাবিক সংখ্যার যোগফল।

সমস্যাটি বোঝার জন্য একটি উদাহরণ নেওয়া যাক,

ইনপুট: সংখ্যা =55

আউটপুট: হ্যাঁ, 10

ব্যাখ্যা:

55 হল প্রথম 10টি স্বাভাবিক সংখ্যার সমষ্টি, 1+2+3+4+5+6+7+8+9+10।

সমাধান পদ্ধতি:

সমস্যা সমাধানের একটি সহজ পদ্ধতি হল n প্রাকৃতিক সংখ্যার যোগফল খুঁজে বের করা যতক্ষণ না এটি সংখ্যার সমান বা বড় হয়।

যোগফল সংখ্যার সমান হলে, n ফেরত দিন।

যদি n-এর যেকোন মানের যোগফল n-এর থেকে বড় হয়, তাহলে -1 ফেরত দিন।

আমাদের সমাধানের কাজ চিত্রিত করার জন্য প্রোগ্রাম,

উদাহরণ

#include <iostream>
using namespace std;

int isNatSum(int num){

   int sum = 0;
   for (int n = 1; sum < num; n++) {
      sum += n;
      if (sum == num)
         return n;
   }
   return -1;
}

int main(){

   int num = 55;
   int n = isNatSum(num);
   if(n == -1)
    cout<<"The value is not sum of natural numbers";
   else
      cout<<"The value is a sum of first "<<n<<" natural numbers";
   return 0;
}

আউটপুট −

The value is a sum of first 10 natural numbers

এই পদ্ধতিটি ভাল তবে আমরা n প্রাকৃতিক সংখ্যার যোগফলের জন্য গাণিতিক সূত্র ব্যবহার করে আরও দক্ষতার সাথে সমস্যার সমাধান করতে পারি।

প্রথম পারস্পরিক সংখ্যার যোগফল সূত্র দ্বারা দেওয়া হয়,

সমষ্টি =n*(n+1)/ 2

আমাদের যোগফল দেওয়া হয়েছে এবং আমাদের n,

এর মান বের করতে হবে

তাই n বের করার জন্য আমাদের একটি দ্বিঘাত সমীকরণ তৈরি করতে হবে।

=> 2*সমষ্টি =n 2 + n

=> n 2 + n - 2*sum =0 , দ্বিঘাত সমীকরণ

এই দ্বিঘাত সমীকরণের সমাধান হল,

আমাদের সমাধানের কাজ চিত্রিত করার জন্য প্রোগ্রাম,

উদাহরণ

#include <iostream>
#include <math.h>
using namespace std;

int isNatSum(int num){
   
   int n = ( -1+ sqrt (1 + (8*num) ))/2;
   if(ceil(n)==floor(n)){
      return n;
   }
   return -1;
}

int main(){
   
   int num = 55;
   int n = isNatSum(num);
   if(n == -1)
      cout<<"The value is not sum of natural numbers";
   else
      cout<<"The value is a sum of first "<<n<<" natural numbers";
   return 0;
}

আউটপুট

The value is a sum of first 10 natural numbers

  1. C++ এ ফিবোনাচি সংখ্যার বর্গক্ষেত্রের সমষ্টি

  2. প্রথম n প্রাকৃতিক সংখ্যার ঘনক্ষেত্রের যোগফলের জন্য C++ প্রোগ্রাম?

  3. প্রথম n প্রাকৃতিক সংখ্যার বর্গের সমষ্টির জন্য C++ প্রোগ্রাম?

  4. Recursion ব্যবহার করে প্রাকৃতিক সংখ্যার যোগফল খুঁজে পেতে C++ প্রোগ্রাম