পৃষ্ঠাসমূহ

রবিবার, ২০ সেপ্টেম্বর, ২০১৫

দুটি সংখ্যার সীমার মাঝে কতটি ফিবোনাচ্চি সংখ্যা অাছে ?

দুইটি সংখ্যা a , b দেওয়া অাছে । [a,b] সীমার মাঝেকতটি ফিবোনাচ্চি সংখ্যা অাছে অামাদেরকে বের করতে হবে ।  a ও b দেওয়া অাছে । তারা উভয়ই ফিবোনাচ্চি হতেও পারে অাবার নাও হতে পারে । ফিবোনাচ্চি হলে  ফিবোনাচ্চি সংখ্যার একটি সূত্র ব্যবহার করে a ও b কততম ফিবোনাচ্চি সংখ্যা  কততম তা বের করতে পারি ।   a  যদি ফিবোনাচ্চি সংখ্যা না হয় তাহলে a এর পরের ফিবোনাচ্চি সংখ্যাটি কততম এবং b যদি ফিবোনাচ্চি সংখ্যা না হয় b এর অাগের ফিবোনাচ্চি সংখ্যাটি কততম বের করতে পারি । এখন যদি এই দুটি ক্রমের বিয়োগফলই হবে a ও b এর মাঝে কতটি ফিবোনাচ্চি সংখ্যা অাছে ।

মনে করি F > 1 একটি ফিবোনাচ্চি সংখ্যা । তাহলে F কততম ফিবোনাচ্চি সংখ্যা তা বের করার জন্য নিচের সূত্রটি ব্যবহা করব ।

n(F) = \bigg\lfloor \log_\varphi \left(F\cdot\sqrt{5} + \frac{1}{2}\right) \bigg\rfloor

সূত্রটি যদি F এর মান এক এর চেয়ে বড় হয় তাহলে সঠিক ফলাফল দিবে ।

যেখানে :

\varphi = \frac{1 + \sqrt{5}}{2} \approx 1.61803\,39887\cdots\,

উদাহরণ দিলে অারও পরিষ্কার হবে : 10 ও 100 এর মাঝে কতটি ফিবোনাচ্চি সংখ্যা অাছে তা বের করতে হবে । তা বের করার জন্য উপরের সূত্র ব্যবহার করে পাই 10(F) = 6 এবং 100(F) = 11 । বিয়োগফল 5 । সুতরাং 10 এবং 100 এর মাঝে 5 টি ফিবোনাচ্চি সংখ্যা অাছে । নিচে ফিবোনাচ্চি সংখ্যার সিরিজেও দেখা যাচ্ছে 10 ও 100 এর মাঝে 5 টি ফিবোনাচ্চি সংখ্যা অাছে ।

1,\;1,\;2,\;3,\;5,\;8,\;13,\;21,\;34,\;55,\;89,\;144,\; \ldots\;

সি প্রোগ্রামিং ভাষায় যদি উপরের হিসেব করার প্রোগ্রাম :

[code language="c"]
#include <stdio.h>
#include <math.h>

int main()
{
double phi = (1+sqrt(5))/2;
int a, b,count = 0,aF,bF;
printf("Enter two numbers: \n");
scanf("%d%d",&a,&b);//Taking input a and b

//logarithm of x base b = log(x)/log(b)

aF = floor(log(a*sqrt(5)+0.5)/log(phi));
bF = floor(log(b*sqrt(5)+0.5)/log(phi));

count = bF - aF;

printf("\nThere are total %d fibonacci numbers.\n",count);


return 0;

}

[/code]

সূত্র ও ছবি : উইকিপিডিয়া ।

মঙ্গলবার, ২৩ জুন, ২০১৫

তৃতীয় ভেরিয়েবল ব্যবহার না করে দুটি ভেরিয়েবলের মান সোয়াপ করা

প্রোগ্রামিং করতে গিয়ে বিভিন্ন সময় অামাদের দুটি ভেরিয়েবলের মান সোয়াপ করতে হয় । দুটি ভেরিয়েবলের মান সোয়াপ করার অর্থ হল প্রথম ভেরিয়েবলের মান দ্বিতীয় ভেরিয়েবলে রাখা এবং দ্বিতীয় ভেরিয়েবলের মান প্রথম ভেরিয়েবলে রাখা । মনে করি   num1 = 80 , num2 = 34  দুইটি ভেরিয়েবল। দুইটি ভেরিয়েবলের মান সোয়াপ করার অর্থ num1 এর মান num2 তে এবং num2 এর মান num1 এ রাখা । অামরা বিভিন্নভাবে দুটি ভেরিয়েবলের মান সোয়াপ করতে পারি ।  অাজ অামরা  কোন ভেরিয়েবলের সাহায্য না নিয়ে কিভাবে দুটি ভেরিয়েবলের মান সোয়াপ করতে পারিন তা দেখব । প্রথমে বিস্তারিত অালোচনা করা হবে এবং তার পাশাপাশি সি প্রোগ্রামিং ল্যাংগুয়েজ ব্যবহার করে দেখানো হবে ।

  1. প্রথম ভেরিয়েবল  ও দ্বিতীয় ভেরিয়েবল যোগ করে যোগফল দ্বিতীয় ভেরিয়েবলে রাখব। যেমন: num2 = num1 + num2 । এখন num2 = num1 + num2 = 80 + 34 = 114 হবে । এই ধাপ শেষে num2 এর মান হয়ে গেল 114 ।
  2. দ্বিতীয় ভেরিয়েবল হতে প্রথম ভেরিয়েবল বিয়েোগ করে বিয়োগফল প্রথম ভেরিয়েবলে রাখব । যেমন : num1 = num2 - num1। এখন num1 = num2 - num1 = 114 - 80 = 34 হবে । এই ধাপ শেষে num1 এর মান হয়ে গেল 34 ।
  3. দ্বিতীয় ভেরিয়েবল হতে প্রথম ভেরিয়েবল বিয়োগ করে বিয়োগফল দ্বিতীয় ভেরিয়েবলে রাখব । যেমন: num2 = num2 - num1 । এখন num2 = num2 - num1 =   114 - 34 = 80 হবে।  এই ধাপ শেষে num2 এর মান হয়ে গেল 80 । 
 অামরা দেখতে পেলাম যে সোয়াপ করার অাগে num1 ও num2 এর মান ছিল 80 ও 34 কিন্তু সোয়াপ করার পরে num1 ও num2 এর মান 34 ও 80 । যে কোন প্রোগ্রামিং ল্যাংগুয়েজে এইভাবে দুইটি ভেরিয়েবলের মান সোয়াপ করা যাবে । অনেক প্রোগ্রামিং ল্যাংগুয়েজে ভেরিয়েবলের মান সোয়াপ করার জন্য ফাংশন থাকে  । অামরা সেদিকে যাব না । নিচে সি প্রোগ্রামিং ল্যাংগুয়েজে দুটি ভেরিয়েবলের মান সোয়াপ করা একটি প্রোগ্রাম দেওয়া হল ।

প্রোগ্রামটির রান করার পরে কনসোলে:
সোয়াপ করার অাগে ও পরে ভেরিয়েবলের মান
 ডাউনলোড