محاسبه ب.م.م و ک.م.م در پایتون

متوسطحلقه

صورت سؤال

برنامه‌ای بنویسید که دو عدد صحیح مثبت را در دو سطر از ورودی بخواند.

در سطر اول خروجی ب.م.م و در سطر دوم ک.م.م این دو عدد را چاپ کنید.

ورودی نمونه

12
18

خروجی نمونه

6
36

خودتان امتحان کنید

کد را در ویرایشگر زیر کامل کنید و اجرا کنید. ورودی نمونه در کادر ورودی آماده است و بعد از هر اجرا، خروجی شما با خروجی نمونه مقایسه می‌شود.

Ctrl + Enter
خروجی

کد را اجرا کنید تا خروجی آن اینجا نمایش داده شود.

راهنمایی

طبق الگوریتم اقلیدس، ب.م.م دو عدد با ب.م.م عدد دوم و باقی‌ماندهٔ تقسیم آن دو برابر است. این جایگزینی را تا وقتی تکرار کنید که باقی‌مانده صفر شود.

جواب و توضیح

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

نمایش جواب
a = int(input())
b = int(input())

x, y = a, b
while y != 0:
    x, y = y, x % y

gcd = x
lcm = a * b // gcd

print(gcd)
print(lcm)

این جواب چطور کار می‌کند؟

در هر دور حلقه، x, y = y, x % y دو عدد را با عدد دوم و باقی‌ماندهٔ تقسیم عوض می‌کند. عددها سریع کوچک می‌شوند و وقتی y صفر شد، x همان ب.م.م است. برای ۱۲ و ۱۸ این مسیر به ۱۸ و ۱۲، بعد به ۱۲ و ۶ و در آخر به ۶ و ۰ می‌رسد.

حلقه روی x و y کار می‌کند تا a و b دست‌نخورده بمانند، چون برای حساب ک.م.م به خود دو عدد هم نیاز است.

حاصل‌ضرب دو عدد همیشه با حاصل‌ضرب ب.م.م و ک.م.م آن‌ها برابر است. پس ک.م.م برابر a * b // gcd است. علامت // نتیجه را عدد صحیح نگه می‌دارد و خروجی 36 است، نه 36.0.

راه دوم: توابع آمادهٔ math

import math

a = int(input())
b = int(input())

print(math.gcd(a, b))
print(math.lcm(a, b))

math.gcd از پایتون ۳٫۵ و math.lcm از پایتون ۳٫۹ در کتابخانهٔ استاندارد هستند. در برنامهٔ واقعی همین‌ها را به کار ببرید؛ نوشتن الگوریتم اقلیدس با دست برای فهمیدن روش و حل تمرین است.

اشتباه‌های رایج

  • خود a و b را در حلقه تغییر می‌دهند و بعد برای ک.م.م دیگر عددهای اصلی را ندارند.
  • ک.م.م را با / حساب می‌کنند و عددی اعشاری مثل 36.0 چاپ می‌شود.
  • x و y را در دو سطر جدا عوض می‌کنند و باقی‌مانده با مقدار تازهٔ x حساب می‌شود.

تمرین بعدی

پایتون را قدم‌به‌قدم یاد بگیرید

این تمرین یکی از تمرین‌های پایتون با جواب دینا کد است. در دورهٔ پایتون از صفر هر مفهوم یک درس کوتاه دارد و تمرین هر درس با چند آزمون پنهان نمره می‌گیرد؛ درس‌های اول رایگان است. برای امتحان کد آزاد هم اجرای آنلاین پایتون در دسترس است.