ک‌م‌م و ب‌م‌م در پایتون

زمان مطالعه: 5 دقیقه ویرایش: 1401/10/18

سلام! توی این مقاله یاد میگیریم چطور در پایتون، ب.م.م و ک.م.م بین دو عدد رو حساب کنیم. قبل از هر چیز باید بدونیم ب.م.م و ک.م.م چی هستن؟!

  • ب.م.م: بزرگترین مقسوم علیه مشترک
  • ک.م.م: کوچکترین مضرب مشترک

 برای این کار دو روش وجود داره که هردو رو انجام میدیم 😉

 


روش اول

روش اول و راحت تر، استفاده از کتابخونه‌ی math هست که با توابع gcd(ب.م.م) و lcm(ک.م.م) انجام میدیم.

در ابتدا باید این کتابخونه رو import کنیم و سپس از توابع استفاده کنیم. هر کدوم از این دو تابع، دو پارامتر میگیرن که شامل دو عدد هستن که قراره ب.م.م یا ک.م.م اونا محاسبه بشه.

import math

num1 = int(input())
num2 = int(input())

print("gcd: " , math.gcd(num1, num2))
print("lcm: " , math.lcm(num1, num2))

 خب همونطور که میدونید اول کتابخونه رو ایمپورت کردیم و بعد اون، دو عددی که میخوایم ب.م.م و ک.م.م شون رو حساب کنیم را از ورودی گرفتیم و در متغیرهایی به نام num1 و num2 ذخیره کردیم.

این روش اول بود که کار خاصی نداشت و کار اصلی رو ما نکردیم :)

 


روش دوم

الگوریتم ک.م.م

برای تمیز شدن برنامه با تابع کارمون رو انجام میدیم. ورودی تابع باید دو عدد باشن که ک.م.م اون ها رو حساب کنیم.

برای ک.م.م، نیاز داریم که بدونیم کدوم عدد بزرگتره. بنابراین با یک شرط این کار رو انجام میدیم و عدد بزرگتر رو در متغیری ذخیره می‌کنیم.

حالا میتونیم یک وایل True بگذاریم و داخل اون با توجه به تعریف ک.م.م، یک شرط بگذاریم تا چک کنم اگر عدد بزرگتر، بر هردو اعداد بخش پذیر بود، یعنی آن عدد ک.م.م هست و اون رو ریترن میکنیم. ولی اگر اینطور نبود به اون متغیرمون(که عدد بزرگتر داخلش بود) یک عدد اضافه میکنیم تا بالاخره به ک.م.م برسیم.

در نهایت، کد به این صورت میشه:

def lcm(x, y):
   if x > y:
       lcm_ = x
   else:
       lcm_ = y

   while(True):
       if((lcm_ % x == 0) and (lcm_ % y == 0)):
           break
       lcm_ += 1

   return lcm_


num1 = int(input())
num2 = int(input())
print("lcm: ", lcm(num1, num2))

توضیح کد: در اول عدد بزرگتر رو انتخاب کردیم و بعد، داخل حلقه وایل،  گفتیم تا زمانی که اون عددمون بر هر دو عدد ورودی بخش پذیر باشه، به عدد، 1 اضافه بشه تا به ک.م.م برسیم و بعد که رسیدیم از حلقه خارج میشیم و اون رو ریترن میکنیم.

 


الگوریتم ب.م.م

این روش خیلی شبیه به ک.م.م هست ولی باید دقت کنید که داخل شرطمون، باید چک کنیم باقی مونده تقسیم هر دو عدد، بر عدد بزرگتر 0 بشه(بخش پذیر باشه) و همینطور اگه نبود ازش کم بشه:

دقت کنید معمولا ب.م.م کوچکتر ار ک.م.م هست.

کد نهایی ب.م.م:

def gcd(x, y):
   if x > y:
       gcd_ = x
   else:
       gcd_ = y

   while(True):
       if((x % gcd_ == 0) and (y % gcd_ == 0)):
           break
       gcd_ -= 1

   return gcd_


num1 = int(input())
num2 = int(input())
print("gcd: ", gcd(num1, num2))

 


خب این مقاله هم تموم شد :) 

خیلی ممنون که تا اینجا همراهمون بودید. مشکلی بود کامنت بذارید و در صورتی که خوشتون اومد ❤ رو فراموش نکنید :)



2
user نوشته شده توسط علی سلیمی برنامه نویس پایتون و جنگو


دیدگاه


برای ثبت دیدگاه، وارد شوید