محاسبه ب.م.م و ک.م.م در پایتون
ب.م.م کوتاهشدهٔ «بزرگترین مقسومعلیه مشترک» و ک.م.م کوتاهشدهٔ «کوچکترین مضرب مشترک» است. ب.م.م را با الگوریتم اقلیدس و یک حلقهٔ while پیدا میکنید و ک.م.م را از روی آن: حاصلضرب دو عدد تقسیم بر ب.م.م.
صورت سؤال
برنامهای بنویسید که دو عدد صحیح مثبت را در دو سطر از ورودی بخواند.
در سطر اول خروجی ب.م.م و در سطر دوم ک.م.م این دو عدد را چاپ کنید.
ورودی نمونه
12 18
خروجی نمونه
6 36
خودتان امتحان کنید
کد را در ویرایشگر زیر کامل کنید و اجرا کنید. ورودی نمونه در کادر ورودی آماده است و بعد از هر اجرا، خروجی شما با خروجی نمونه مقایسه میشود.
کد را اجرا کنید تا خروجی آن اینجا نمایش داده شود.
راهنمایی
طبق الگوریتم اقلیدس، ب.م.م دو عدد با ب.م.م عدد دوم و باقیماندهٔ تقسیم آن دو برابر است. این جایگزینی را تا وقتی تکرار کنید که باقیمانده صفر شود.
جواب و توضیح
بهتر است جواب را بعد از امتحان کردن راه خودتان باز کنید.
نمایش جواب
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 حساب میشود.
تمرین بعدی
پایتون را قدمبهقدم یاد بگیرید
این تمرین یکی از تمرینهای پایتون با جواب دینا کد است. در دورهٔ پایتون از صفر هر مفهوم یک درس کوتاه دارد و تمرین هر درس با چند آزمون پنهان نمره میگیرد؛ درسهای اول رایگان است. برای امتحان کد آزاد هم اجرای آنلاین پایتون در دسترس است.