ខាងក្រោមនេះគឺជាការរៀបរាប់អំពីរបៀបគណនា និងទទួលបានភាគចែកទូទៅបំផុត និងផលគុណសាមញ្ញតិចបំផុតនៅក្នុង Python។
- ចែកចែកទូទៅបំផុត និងផលគុណរួមតិចបំផុតនៃចំនួនគត់ពីរ
- ចែកចែកទូទៅបំផុត និងផលគុណរួមតិចបំផុតនៃចំនួនគត់បីឬច្រើន។
ចំណាំថាលក្ខណៈជាក់លាក់នៃមុខងារដែលបានផ្តល់នៅក្នុងបណ្ណាល័យស្តង់ដារខុសគ្នាអាស្រ័យលើកំណែ 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() គាំទ្រតែអាគុយម៉ង់ពីរប៉ុណ្ណោះ។
ដើម្បីស្វែងរកផ្នែកចែកទូទៅដ៏ធំបំផុត ឬផលគុណធម្មតាតិចបំផុតនៃចំនួនគត់បី ឬច្រើននោះ គ្មានក្បួនដោះស្រាយស្មុគស្មាញពិសេសគឺត្រូវបានទាមទារ។ គ្រាន់តែគណនាចំនួនចែកទូទៅដ៏ធំបំផុត ឬពហុគុណធម្មតាតិចបំផុតសម្រាប់តម្លៃច្រើននីមួយៗដោយប្រើអនុគមន៍លំដាប់ខ្ពស់ 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
ជាថ្មីម្តងទៀត សូមចំណាំថា មុនពេល 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