গসাগুঃ
দুইটি সংখ্যার কমন ডিভাইজরগুলোর মধ্যে সবচেয়ে বড় ডিভাইজরটিই হল ঐ দুইটি সংখ্যার গসাগু বা Greatest Common Divisor (GCD) .
ধরা যাক, ১২ এবং ১৮ এর গসাগু বের করবোঃ
12/1 = 12 18/1 = 18
12/2 = 6 18/2 = 9
12/3 = 4 18/3 = 6
১২ এবং ১৮ এর ডিভাইজরগুলো যথাক্রমে ১,২,৩,৪,৬,১২ এবং ১,২,৩,৬,৯,১৮ এদের মধ্যে কমন ডিভাইজরগুলো হল, ১,২,৩,৬ । আর কমন ডিভাইজরগুলোর মধ্যে সবচেয়ে বড় হল ৬। সুতরাং ১২ এবং ১৮ এর লসাগু হল ৬।
GCD বের করার জন্য ছোটকালে আমরা একটি অ্যালগরিদম ব্যাবহার করেছি। ওটা আসলে ইউক্লিড অ্যালগরিদম। ধরা যাক দুইটা সংখ্যা x এবং y যেখানে x>y এদের GCD বের করতে হবে । তাহলে x কে y দ্বারা ভাগ করবো। যদি ভাগশেষ থাকে তাহলে সেই ভাগশেষ দিয়ে আবার x কে ভাগ করবো। এভাবে চলতে থাকবে যতক্ষন পর্যন্ত ভাগশেষ শুন্য না হয়। যখন ভাগশেষ শুন্য হয় এবং সে অবস্থায় যা ভাজক হিসেবে থাকে তাই গসাগু।
Algorithm
1. Divide a by b where a>b
2. if reminder!=0 then then divide a by reminder
3. goto step 2 while untill reminder is zero
১২ এবং ১৮ এর গসাগু এ পদ্ধতিতে করতে গেলে এমন হবেঃ
12| 18 |1
| 12 |
--------
6| 12 |2
| 12 |
---------
0
এখানে আমরা উপরের অ্যালগিরদমের মতই করেছি। ভাজক ৬ থাকা অবস্থায় ভাগশেষ শুন্য হয়ে গেছে। সুতরাং ৬ হল গসাগু।
কোড করা একদম পানিভাত! আমাদের ভাগশেষ শুন্য না হলে প্রতিবার ভাজক এবং ভাজ্য পরিবর্তন হবে। মানে ভাগশেষ হয়ে যাবে ভাজক এবং ভাজক হয়ে যাবে ভাজ্য। এভাবে চলতে থাকবে। যখনই ভাগশেষ শুন্য হবে সে অবস্থায় যে ভাজক থাকবে সেই হবে গসাগু বা GCD। কোড পাওয়া যাবে এখানে।
লসাগুঃ লসাগু বা LCM হল Least Common Multiple । দুইটা সংখ্যর কমন গুনিতকের মধ্যে সবচেয়ে ছোটটি হল লসাগু বা LCM। যেমন ২ এবং ৩ এর লসাগু বের করবো । সেক্ষেত্রে প্রথমে এদের গুনিতকগুলো বের করতে হবে-
২ এর গুনিতকগুলো হলঃ ২,৪,৬,৮,১০,১২,১৪,১৬,১৮,২০
৩ এর গুনিতকগুলো হলঃ ৩,৬,৯,১২,১৫,১৮,২১,২৪,২৭ ,৩০
এদের মধ্যে কমন গুনিতকগুলো হলঃ ৬, ১২ ,১৮
এদের মধ্যে ছোটটি হল ৬ সুতরাং ২ এবং ৩ এর লসাগু ৬।
গসাগুর সাথে লসাগুর একটি সম্পর্ক আছে। দুইটা সংখ্যা যদি x,y হয় তাহলে
LCM(x,y) = |x * y|/GCD(x,y)
GCD LCM এর সম্পূর্ণ কোড পাওয়া যাবে এখানে
প্র্যাক্টিস প্রব্লেমঃ UVA 11417, UVA 11388