در ادامه نحوه محاسبه و به دست آوردن بزرگترین مقسوم علیه مشترک و کمترین مضرب مشترک در پایتون توضیح داده شده است.
- بزرگترین مقسوم علیه مشترک و کمترین مضرب مشترک دو عدد صحیح
- بزرگترین مقسوم علیه مشترک و کمترین مضرب مشترک سه یا چند اعداد صحیح
توجه داشته باشید که مشخصات توابع ارائه شده در کتابخانه استاندارد بسته به نسخه پایتون متفاوت است. نمونه ای از اجرای تابعی که در کتابخانه استاندارد نیست نیز در این مقاله نشان داده شده است.
- پایتون 3.4 یا قبل از آن
- GCD:
fractions.gcd()
(فقط دو آرگومان)
- GCD:
- پایتون 3.5 یا بالاتر
- GCD:
math.gcd()
(فقط دو آرگومان)
- GCD:
- پایتون 3.9 یا بالاتر
- GCD:
math.gcd()
(بیش از سه آرگومان را پشتیبانی می کند) - کوچکترین مخرج مشترک:
math.lcm()
(بیش از سه آرگومان را پشتیبانی می کند)
- GCD:
در اینجا روش را با استفاده از کتابخانه استاندارد پایتون توضیح می دهیم. NumPy به راحتی می تواند برای محاسبه بزرگترین مقسوم علیه مشترک و کمترین مضرب مشترک برای هر عنصر از آرایه های متعدد استفاده شود.
بزرگترین مقسوم علیه مشترک و کمترین مضرب مشترک دو عدد صحیح
GCD
از پایتون 3.5، یک تابع gcd() در ماژول ریاضی وجود دارد. gcd() مخفف آن است
- greatest common divisor
بزرگترین مقسوم علیه مشترک عدد صحیح مشخص شده در آرگومان را برمی گرداند.
import math
print(math.gcd(6, 4))
# 2
توجه داشته باشید که در پایتون 3.4 و قبل از آن، تابع gcd() در ماژول fractions است نه ماژول ریاضی. کسرها باید وارد شوند و fractions.gcd().
کوچکترین مخرج مشترک
تابع lcm() که کمترین مضرب مشترک را برمی گرداند، به ماژول ریاضی در پایتون 3.9 اضافه شد. lcm مخفف عبارت است
- least common multiple
حداقل مضرب مشترک عدد صحیح مشخص شده در آرگومان را برمیگرداند.
print(math.lcm(6, 4))
# 12
قبل از Python 3.8، lcm() ارائه نشده است، اما می توان به راحتی با استفاده از gcd() محاسبه کرد.
lcm(a, b) = a * b / gcd(a, b)
مثال پیاده سازی
def my_lcm(x, y):
return (x * y) // math.gcd(x, y)
print(my_lcm(6, 4))
# 12
/
از آنجایی که این منجر به یک شناور اعشاری می شود، از دو اسلش معکوس برای کوتاه کردن نقطه اعشار و برگرداندن نتیجه تقسیم عدد صحیح استفاده می شود. توجه داشته باشید که هیچ پردازشی برای تعیین اینکه آیا آرگومان یک عدد صحیح است یا خیر انجام نمی شود.
بزرگترین مقسوم علیه مشترک و کمترین مضرب مشترک سه یا چند اعداد صحیح
پایتون 3.9 یا بالاتر
با شروع پایتون 3.9، همه توابع زیر بیش از سه آرگومان را پشتیبانی می کنند.
math.gcd()
math.lcm()
print(math.gcd(27, 18, 9))
# 9
print(math.gcd(27, 18, 9, 3))
# 3
print(math.lcm(27, 9, 3))
# 27
print(math.lcm(27, 18, 9, 3))
# 54
*
اگر می خواهید بزرگترین مقسوم علیه مشترک یا کمترین مضرب مشترک عناصر یک لیست را محاسبه کنید، آرگومان را با این مشخص کنید.
l = [27, 18, 9, 3]
print(math.gcd(*l))
# 3
print(math.lcm(*l))
# 54
پایتون 3.8 یا قبل از آن
قبل از پایتون 3.8، تابع gcd() تنها از دو آرگومان پشتیبانی می کرد.
برای یافتن بزرگترین مقسوم علیه مشترک یا حداقل مضرب مشترک سه یا چند اعداد صحیح، هیچ الگوریتم پیچیده ای لازم نیست. فقط بزرگترین مقسوم علیه مشترک یا حداقل مضرب مشترک را برای هر یک از مقادیر چندگانه به نوبه خود با استفاده از تابع مرتبه بالاتر ()reduce محاسبه کنید.
GCD
from functools import reduce
def my_gcd(*numbers):
return reduce(math.gcd, numbers)
print(my_gcd(27, 18, 9))
# 9
print(my_gcd(27, 18, 9, 3))
# 3
l = [27, 18, 9, 3]
print(my_gcd(*l))
# 3
مجدداً، توجه داشته باشید که قبل از پایتون 3.4، تابع gcd() در ماژول کسری است، نه ماژول ریاضی.
کوچکترین مخرج مشترک
def my_lcm_base(x, y):
return (x * y) // math.gcd(x, y)
def my_lcm(*numbers):
return reduce(my_lcm_base, numbers, 1)
print(my_lcm(27, 9, 3))
# 27
print(my_lcm(27, 18, 9, 3))
# 54
l = [27, 18, 9, 3]
print(my_lcm(*l))
# 54