فيما يلي وصف لكيفية حساب والحصول على القاسم المشترك الأكبر والمضاعف المشترك الأصغر في بايثون.
- القاسم المشترك الأكبر والمضاعف المشترك الأصغر لعددين صحيحين
- القاسم المشترك الأكبر والمضاعف المشترك الأصغر لثلاثة أعداد صحيحة أو أكثر
لاحظ أن مواصفات الوظائف المتوفرة في المكتبة القياسية تختلف باختلاف إصدار Python. يتم أيضًا عرض مثال على تنفيذ دالة غير موجودة في المكتبة القياسية في هذه المقالة.
- Python 3.4 أو أقدم
- GCD:
fractions.gcd()
(حجتان فقط)
- GCD:
- Python 3.5 أو أحدث
- GCD:
math.gcd()
(حجتان فقط)
- GCD:
- Python 3.9 أو أحدث
- GCD:
math.gcd()
(يدعم أكثر من ثلاث حجج) - القاسم المشترك الأصغر:
math.lcm()
(يدعم أكثر من ثلاث حجج)
- GCD:
نوضح هنا الطريقة باستخدام مكتبة Python القياسية ؛ يمكن بسهولة استخدام NumPy لحساب القاسم المشترك الأكبر والمضاعف المشترك الأصغر لكل عنصر من عناصر المصفوفات المتعددة.
القاسم المشترك الأكبر والمضاعف المشترك الأصغر لعددين صحيحين
GCD
منذ Python 3.5 ، توجد وظيفة gcd () في وحدة الرياضيات. gcd () هو اختصار لـ
- greatest common divisor
لعرض القاسم المشترك الأكبر للعدد الصحيح المحدد في الوسيطة.
import math
print(math.gcd(6, 4))
# 2
لاحظ أنه في Python 3.4 والإصدارات الأقدم ، فإن وظيفة gcd () موجودة في وحدة الكسور ، وليس في وحدة الرياضيات. يجب استيراد الكسور و fractions.gcd ().
القاسم المشترك الأصغر
تمت إضافة الوظيفة lcm () ، التي تُرجع المضاعف المشترك الأصغر ، إلى وحدة الرياضيات في Python 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
/
نظرًا لأن هذا ينتج عنه تعويم عشري ، يتم استخدام شرطتين مائلتين عكسيتين لاقتطاع الفاصلة العشرية وإرجاع نتيجة قسمة عدد صحيح. لاحظ أنه لا يتم إجراء أي معالجة لتحديد ما إذا كانت الوسيطة عددًا صحيحًا أم لا.
القاسم المشترك الأكبر والمضاعف المشترك الأصغر لثلاثة أعداد صحيحة أو أكثر
Python 3.9 أو أحدث
بدءًا من Python 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
Python 3.8 أو أقدم
قبل Python 3.8 ، كانت الدالة gcd () تدعم وسيطين فقط.
للعثور على القاسم المشترك الأكبر أو المضاعف المشترك الأصغر لثلاثة أعداد صحيحة أو أكثر ، لا يلزم وجود خوارزمية معقدة بشكل خاص ؛ فقط احسب القاسم المشترك الأكبر أو المضاعف المشترك الأصغر لكل من القيم المتعددة بدورها باستخدام دالة الترتيب الأعلى تقليل ().
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
مرة أخرى ، لاحظ أنه قبل Python 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