در اینجا یک راه برای پیاده سازی این تابع وجود دارد:
def smallest_multiple(n):
def gcd(a, b):
"""Calculate the Greatest Common Divisor of a and b."""
while b:
a, b = b, a % b
return a
def lcm(a, b):
"""Calculate the Least Common Multiple of a and b."""
return a * b // gcd(a, b)
result = 1
for i in range(2, n):
result = lcm(result, i)
return result
تابع smallest_multiple یک ورودی n می گیرد و کوچکترین عددی را که بر همه اعداد کوچکتر از n بخش پذیر است را برمی گرداند.
این تابع از مفهوم بزرگترین مقسوم علیه مشترک (GCD) و حداقل مضرب مشترک (LCM) استفاده می کند. GCD دو عدد بزرگترین عددی است که هر دو عدد را تقسیم می کند و LCM کوچکترین عددی است که بر هر دو عدد تقسیم می شود.
تابع gcd GCD دو عدد را با استفاده از الگوریتم اقلیدسی محاسبه می کند. تابع lcm LCM دو عدد را با استفاده از GCD و فرمول a * b // gcd(a, b) محاسبه می کند.
تابع smallest_multiple در تمام اعداد کوچکتر از n تکرار می شود و LCM هر عدد را با نتیجه تکرار قبلی محاسبه می کند. نتیجه تکرار نهایی کوچکترین عددی است که بر همه اعداد کوچکتر از n بخش پذیر است.