Sunday, April 19, 2020

মৌলিক সংখ্যা নির্ণয়ে বর্গমূলের ব্যবহার


১৯ এপ্রিল ২০২০ সকাল ৯:৫১ – দুপুর ১:১২
----------------------------
প্রোগ্রামিং এর একজন শিক্ষার্থী প্রশ্ন করেছেন:
”মৌলিক সংখ্যা বের করার জন্য কেন সংখ্যাটির বর্গমূল পর্যন্ত লুপ চালাতে হয় ? এটার গানিতিক ব্যাখ্যা কি?

for( i = 2; i <= root; i++){

}


অর্থাৎ i এর মান সংখ্যাটির বর্গমূল পর্যন্ত নেয়া হলো কেন?
---------------------------------------------
ভালো একটি প্রশ্ন! এটার ব্যাখ্যা দেয়ার জন্যই এই টিউটোরিয়ালের অবতারণা।
আমি ধরে নিচ্ছি আপনি মৌলিক সংখ্যা এবং ভাগ ও গুণের মধ্যে সম্পর্ক ইত্যাদি সাধারণ বিষয় অবগত আছেন। তাহলে শুরু করা যাক।
শুরুতেই তত্ব কথা বলে মাথা গরম না করে উদাহরণ দিয়ে মাথাটাকে নরম করি, চলুন।
একটি সংখ্যা নিলাম 37
37 এর বর্গমূল = 6.08
এবার 37 কে 2 থেকে শুরু করে ক্রমান্বয়ে ভাগ দেয়ার চেষ্টা করি:
37 / 2 => (2 x 18) 1 ভাগশেষ থাকে। নি:শেষে ভাগ যায় না।
37 / 3 => (3 x 12) 1 ভাগশেষ থাকে। নি:শেষে ভাগ যায় না।
37 / 4 => (4 x 9) 1 ভাগশেষ থাকে। নি:শেষে ভাগ যায় না।
37 / 5 => (5 x 7) 2 ভাগশেষ থাকে। নি:শেষে ভাগ যায় না।
দেখা যাচ্ছে 37 কে 2, 3, 4 ও 5 দিয়ে নি:শেষে ভাগ যাচ্ছে না।
এবার 6 দিয়ে ভাগ করার চেষ্টা করা যা’ক।
6 এর নামতা পড়ি..
6 x 1 = 6
6 x 2 = 12
6 x 3 =18
6 x 4 = 24
6 x 5 = 30
তাহলে দেখা যাচ্ছে 6 কে 2, 3, 4 ও 5 দিয়ে গুণ করেও 37 পাওয়া যায়নি। তার মানে 6 দিয়ে 37 কে 5 পর্যন্ত ভাগ করে (নি:শেষে) ভাগ যায়নি।
মজার ব্যপার হলো, এভাবে 6 কে 5 পর্যন্ত গুণ করারই কোনো প্রয়োজন ছিল না। কারণ আমরা এর আগেই দেখেছি 2, 3, 4 ও 5 দিয়ে 37 বিভাজ্য নয়। সুতরাং সরাসরি 6 কে 6 দ্বারা গুণ করেই দেখা যেত।
37 / 6 = (6 x 6) 1 ভাগশেষ থাকে। নি:শেষে ভাগ যায় না।
6 x 6 = 36
তাহলে বোঝা গেল 6 দিয়েও 37 বিভাজ্য নয়।(1 ভাগশেষ থাকে)
এবার তাহলে 7 দিয়ে ভাগ করার চেষ্টা করি।
উহু.. এবার আর বোকামী করবো না। 7 এর সাথে 2, 3, 4, 5 গুণ করে লাভ নেই। কারণ আমরা তো আগেই দেখেছি যে, এগুলো দিয়ে 37 বিভাজ্য নয়। এমনকি 7 কে 6 দিয়ে গুণ করলে হয় 42।
37 / 7 => (7 x 5) 1 ভাগশেষ থাকে। নি:শেষে ভাগ যায় না।
7 x 6 = 42 (42, 37 এর চেয়ে বড়)
42 হলো 37 এর চেয়ে বড়। এভাবে 7 কে 6 থেকে শুরু করে উপরের যত সংখ্যা দিয়ে গুণ করা হবে সব গুণফল-ই হবে 37 এর চেয়ে বড়। সুতরাং এর পর আর গুণ/ভাগ করে লাভ নেই।
এবার আমরা 37 কে 8, 9, 10… ইত্যাদি দ্বারা ভাগ করার চেষ্টা করি।
37 / 8 => (8 x 4) 5 ভাগশেষ থাকে। নি:শেষে ভাগ যায় না।
37 / 9 => (9 x 4) 1 ভাগশেষ থাকে। নি:শেষে ভাগ যায় না।
37 / 10 => (10 x 3) 7 ভাগশেষ থাকে। নি:শেষে ভাগ যায় না।
37 / 11 => (11 x 3) 4 ভাগশেষ থাকে। নি:শেষে ভাগ যায় না।
37 / 12 => (12 x 3) 1 ভাগশেষ থাকে। নি:শেষে ভাগ যায় না।
37 / 13 => (13 x 2) 11 ভাগশেষ থাকে। নি:শেষে ভাগ যায় না।
37 / 14 => (14 x 2) 9 ভাগশেষ থাকে। নি:শেষে ভাগ যায় না।


----------------------
এবার আমরা সবগুলো ফলকে এক সাথে লক্ষ্য করি:
37 / 2 => (2 x 18) 1 ভাগশেষ থাকে। নি:শেষে ভাগ যায় না।
37 / 3 => (3 x 12) 1 ভাগশেষ থাকে। নি:শেষে ভাগ যায় না।
37 / 4 => (4 x 9) 1 ভাগশেষ থাকে। নি:শেষে ভাগ যায় না।
37 / 5 => (5 x 7) 2 ভাগশেষ থাকে। নি:শেষে ভাগ যায় না।
37 / 6 => (6 x 6) 1 ভাগশেষ থাকে। নি:শেষে ভাগ যায় না।
37 / 7 => ভাগফল 5, ভাগশেষ 1। নি:শেষে ভাগ যায় না।
37 / 8 => ভাগফল 4, ভাগশেষ 5। নি:শেষে ভাগ যায় না।
37 / 9 => ভাগফল 4, ভাগশেষ 1। নি:শেষে ভাগ যায় না।
37 / 10 => ভাগফল 3, ভাগশেষ 7। নি:শেষে ভাগ যায় না।
37 / 11 => (11 x 3) 4 ভাগশেষ থাকে। নি:শেষে ভাগ যায় না।
37 / 12 => (12 x 3) 1 ভাগশেষ থাকে। নি:শেষে ভাগ যায় না।
37 / 13 => (13 x 2) 11 ভাগশেষ থাকে। নি:শেষে ভাগ যায় না।
37 / 14 => (14 x 2) 9 ভাগশেষ থাকে। নি:শেষে ভাগ যায় না।
--------------------------------
লক্ষ্য করলে দেখা যাবে,
6 কে সর্বোচ্চ 6 দিয়ে গুণ করলে গুণফল 37 এর নিচে থাকে। 7 দিয়ে গুণ করলেই গুণফল(6x7=42) 37 এর চেয়ে বড় হয়।
উল্টোভাবে, 6 দিয়ে 37 কে ভাগ করলে ভাগফল 6, ভাগশেষ 1 ।  
একই ভাবে,
7 কে সর্বোচ্চ 5 দিয়ে গুণ করলে গুণফল 37 এর নিচে থাকে। 6 দিয়ে গুণ করলেই গুণফল(7x6=42) 37 এর চেয়ে বড় হয়।
8 কে সর্বোচ্চ 4 দিয়ে গুণ করলে ….
9 কে সর্বোচ্চ 4 দিয়ে গুণ করলে …..
10 কে সর্বোচ্চ 3 দিয়ে গুণ করলে ….
11 কে সর্বোচ্চ 3 দিয়ে গুণ করলে ….
12 কে সর্বোচ্চ 3 দিয়ে গুণ করলে …..
13 কে সর্বোচ্চ 2 দিয়ে গুণ করলে …..
14 কে সর্বোচ্চ 2 দিয়ে গুণ করলে …..
…………
……….
18 কে সর্বোচ্চ 2 দিয়ে গুণ করলে …..
19 কে সর্বোচ্চ 1 দিয়ে গুণ করলে …..
-----------------
উপরের বিশ্লেষণ থেকে আমরা বুঝতে পারলাম  - 37 কে 2, 3, 4, 5 ও 6 দ্বারা ভাগ করলে কোন একটা সংখ্যার ক্ষেত্রেও নি:শেষে বিভাজ্য হয়নি। এবং 6 এর চেয়ে বড় কোনো সংখ্যা দ্বারাও নি:শেষে বিভাজ্য হয়নি। উপরন্তু 6 এর চেয়ে বড় সংখ্যাগুলো দিয়ে ভাগ করলে ভাগফল ঘুরে ফিরে 2, 3, 4, 5 ও 6 এর মধ্যেই থাকছে। সেইহেতু বড় বড় সংখ্যা দিয়ে ভাগ না করে আমরা যদি 2-6 পর্যন্ত সংখ্যাগুলো দিয়ে ভাগ করি তাহলেই বিভাজ্যতা পরীক্ষা হয়ে যাবে।
এটা কেন হচ্ছে?
কারণ 37 এর বর্গমূল = 6.08
অর্থাৎ 37 = 6.08 x 6.08
--
আরেকটা সংখ্যা 36 ধরে আমরা বিষয়টাকে আরেকটু ব্যাখ্যা করার চেষ্টা করি।
36 এর বর্গমূল = 6
=> 36 = 6 x 6
=> 36 = 4 x 9
=> 36 = 3 x 12
=> 36 = 2 x 18
--
দেখা যাচ্ছে, 36 কে 6, 9, 12 ও 18 দ্বারা ভাগ করে ভাগফল যথাক্রমে 6, 4, 3, 2 আসে। কোনো ক্ষেত্রেই ভাগফল 6 এর উপরে যায়নি, 2 থেকে 6 এর মধ্যেই থেকেছে।
বিপরীতক্রমে যদি বলি, 2, 3, 4 ও 6 দিয়ে ভাগ করলে 36 সংখ্যাটি নি:শেষে বিভাজ্য হয়েছে। অর্থাৎ 36 সংখ্যাটি নি:শেষে বিভাজ্য কিনা তা পরীক্ষা করার জন্য 2-6 পর্যন্ত সংখ্যা দ্বারা ভাগ করে পরীক্ষা করাই যথেষ্ট। যদি ভাগ যায় তবে এর মধ্যেই কোন না কোন সংখ্যা দ্বারা ভাগ যাবে। আর যদি না যায় তবে এর চেয়ে বড় কোনো সংখ্যা দ্বারাও যাবে না। আমরা দেখতেই পাচ্ছি উপরের সংখ্যাগুলো ছাড়া 36 এর আর কোনো গুণনীয়ক নেই (1 ও 36 নিজে বাদে)।
প্রশ্ন হলো 6 পর্যন্ত-ই কেন? 6 এর চেয়ে বড় সংখ্যা নয় কেন?
সহজ উত্তর 36 এর বর্গমূল 6 ।
ব্যাখ্যামূলক উত্তর জানার জন্য আবার প্রথম থেকে পড়ে আসতে হবে :P ।
যেমনটা হয়েছে 37 এর ক্ষেত্রে। এর বর্গমূল 6.08। ফলে 2-6 পর্যন্ত সংখ্যাগুলো দিয়ে ভাগ করে দেখা গেছে এর কোনোটি দ্বারাই ভাগ যায়নি। এবং আরও অগ্রসর হয়ে দেখা গেছে 6 এর উপরে আর অন্য কোনো সংখ্যা দিয়েও ভাগ যায়নি।
কাঠখোট্টা বইয়ের তাত্ত্বিক ভাষায় বলা যায় – কোনো সংখ্যাকে দু’টি সংখ্যার গুণফল রূপে প্রকাশ করলে তাদের যেকোনো একটা সংখ্যা ঐ সংখ্যার বর্গমূলের সমান বা ছোট হবে(6, 4, 3, 2)। অপর সংখ্যাটি বর্গমূলের সমান বা বড় হতে পারে(6, 9, 12, 18) ।
36 এর উদাহরণটিকে তাত্বিক সংগার সাথে মিলিয়ে নিলে বোঝার সুবিধা হবে।
তাহলে আমরা আমাদের মত করে এই সিদ্ধান্তে আসলাম যে,
”কোনো সংখ্যার বর্গমূল যা হবে সেই সংখ্যা পর্যন্ত সংখ্যাগুলো দ্বারা ঐ সংখ্যাটিকে ভাগ করে পরীক্ষা করা যায় যে সংখ্যাটি মৌলিক সংখ্যা কিনা।
যদি মৌলিক হয় তবে সংখ্যাগুলোর মধ্যে একটা সংখ্যা দ্বারাও নি:শেষে ভাগ যাবে না। আর যদি মৌলিক না হয় তবে এদের মধ্যে অন্তত একটা সংখ্যা দ্বারা নি:শেষে ভাগ যাবেই।”
আর এ জন্যই কমপিউটার প্রোগ্রামিং এ মৌলিক সংখ্যা বের করার জন্য সংখ্যাটির বর্গমূল পর্যন্ত লুপ চালানো হয়।
ঠিক এভাবে..

for( i = 2; i <= root; i++){

}


1 comment:

  1. অনেক ভালো লাগলো।একেবারে ক্লিয়ার হয়ে গোলাম সমস্যাটা।

    ReplyDelete