Aşağıda Python-da ən böyük ümumi bölən və ən kiçik ümumi çoxluğu hesablamaq və əldə etmək təsviri verilmişdir.
- İki tam ədədin ən böyük ortaq bölən və ən kiçik ümumi çoxluğu
- Ən böyük ortaq bölən və üç və ya daha çox tam ədədin ən kiçik ümumi çoxluğu
Qeyd edək ki, standart kitabxanada təqdim olunan funksiyaların spesifikasiyası Python versiyasından asılı olaraq fərqlənir. Standart kitabxanada olmayan funksiyanın həyata keçirilməsinin nümunəsi də bu məqalədə göstərilmişdir.
- Python 3.4 və ya daha əvvəl
- GCD:
fractions.gcd()
(yalnız iki arqument)
- GCD:
- Python 3.5 və ya daha sonra
- GCD:
math.gcd()
(yalnız iki arqument)
- GCD:
- Python 3.9 və ya daha sonra
- GCD:
math.gcd()
(üçdən çox arqumenti dəstəkləyir) - ən kiçik ortaq məxrəc:
math.lcm()
(üçdən çox arqumenti dəstəkləyir)
- GCD:
Burada standart Python kitabxanasından istifadə edərək metodu izah edirik; NumPy, çoxlu massivin hər bir elementi üçün ən böyük ümumi bölən və ən kiçik ümumi çoxluğu hesablamaq üçün asanlıqla istifadə edilə bilər.
İki tam ədədin ən böyük ortaq bölən və ən kiçik ümumi çoxluğu
GCD
Python 3.5-dən bəri riyaziyyat modulunda gcd() funksiyası mövcuddur. gcd() qısaltmasıdır
- greatest common divisor
Arqumentdə göstərilən tam ədədin ən böyük ümumi bölənini qaytarır.
import math
print(math.gcd(6, 4))
# 2
Qeyd edək ki, Python 3.4 və ondan əvvəlki versiyalarda gcd() funksiyası riyaziyyat modulunda deyil, fraksiyalar modulundadır. fraksiyalar idxal edilməlidir və fractions.gcd().
ən kiçik ortaq məxrəc
Ən kiçik ümumi çoxluğu qaytaran lcm() funksiyası Python 3.9-da riyaziyyat moduluna əlavə edilmişdir. lcm qısaltmasıdır
- least common multiple
Arqumentdə göstərilən tam ədədin ən kiçik ümumi çoxluğunu qaytarır.
print(math.lcm(6, 4))
# 12
Python 3.8-dən əvvəl lcm() təmin edilməyib, lakin gcd() istifadə edərək asanlıqla hesablana bilər.
lcm(a, b) = a * b / gcd(a, b)
İcra nümunəsi.
def my_lcm(x, y):
return (x * y) // math.gcd(x, y)
print(my_lcm(6, 4))
# 12
/
Bu, ondalık float ilə nəticələndiyindən, ondalık nöqtəni kəsmək və tam ədədə bölmə nəticəsini qaytarmaq üçün iki əks kəsikdən istifadə olunur. Qeyd edək ki, arqumentin tam ədəd olub-olmadığını müəyyən etmək üçün heç bir emal aparılmır.
Ən böyük ortaq bölən və üç və ya daha çox tam ədədin ən kiçik ümumi çoxluğu
Python 3.9 və ya daha sonra
Python 3.9-dan başlayaraq, aşağıdakı funksiyaların hamısı üçdən çox arqumenti dəstəkləyir.
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
*
Əgər siyahının elementlərinin ən böyük ortaq bölənini və ya ən kiçik ümumi çoxluğunu hesablamaq istəyirsinizsə, bununla arqumenti göstərin.
l = [27, 18, 9, 3]
print(math.gcd(*l))
# 3
print(math.lcm(*l))
# 54
Python 3.8 və ya daha əvvəl
Python 3.8-dən əvvəl gcd() funksiyası yalnız iki arqumenti dəstəkləyirdi.
Ən böyük ümumi bölən və ya üç və ya daha çox tam ədədin ən kiçik ümumi çoxluğunu tapmaq üçün xüsusilə mürəkkəb alqoritm tələb olunmur; sadəcə olaraq daha yüksək səviyyəli azaltma funksiyasından istifadə edərək çoxlu dəyərlərin hər biri üçün ən böyük ortaq bölən və ya ən kiçik ümumi çoxluğu hesablayın.
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
Yenə də qeyd edək ki, Python 3.4-dən əvvəl gcd() funksiyası riyaziyyat modulunda deyil, fraksiya modulundadır.
ən kiçik ortaq məxrəc
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