Python හි ශ්‍රේෂ්ඨතම පොදු බෙදුම්කරු සහ අවම පොදු ගුණාකාර ගණනය කර ලබා ගන්න

ව්යාපාරික

පහත දැක්වෙන්නේ Python හි ශ්‍රේෂ්ඨතම පොදු බෙදුම්කරු සහ අවම පොදු ගුණාකාරය ගණනය කර ලබා ගන්නා ආකාරය පිළිබඳ විස්තරයකි.

  • නිඛිල දෙකක ශ්‍රේෂ්ඨතම පොදු භාජකය සහ අවම පොදු ගුණාකාරය
  • නිඛිල තුනක හෝ වැඩි ගණනක ශ්‍රේෂ්ඨතම පොදු බෙදුම්කරු සහ අවම පොදු ගුණාකාරය

සම්මත පුස්තකාලයේ ලබා දී ඇති ශ්‍රිතවල පිරිවිතර Python අනුවාදය අනුව වෙනස් වන බව සලකන්න. සම්මත පුස්තකාලයේ නොමැති ශ්‍රිතයක් ක්‍රියාත්මක කිරීමේ උදාහරණයක් ද මෙම ලිපියේ දැක්වේ.

  • පයිතන් 3.4 හෝ ඊට පෙර
    • GCD:fractions.gcd()(තර්ක දෙකක් පමණි)
  • පයිතන් 3.5 හෝ ඊට පසු
    • GCD:math.gcd()(තර්ක දෙකක් පමණි)
  • පයිතන් 3.9 හෝ ඊට පසු
    • GCD:math.gcd()(තර්ක තුනකට වඩා සහය දක්වයි)
    • අවම පොදු හරය:math.lcm()(තර්ක තුනකට වඩා සහය දක්වයි)

මෙහිදී අපි සම්මත 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

/මෙය දශම පාවෙන ප්‍රතිඵලයක් වන බැවින්, දශම ලක්ෂ්‍යය කපා හැරීමට සහ පූර්ණ සංඛ්‍යා බෙදීමේ ප්‍රතිඵලයක් ලබා දීමට backslashes දෙකක් භාවිතා වේ. තර්කය පූර්ණ සංඛ්‍යාවක් ද නැද්ද යන්න තීරණය කිරීමට කිසිදු සැකසුම් කිරීමක් සිදු නොවන බව සලකන්න.

නිඛිල තුනක හෝ වැඩි ගණනක ශ්‍රේෂ්ඨතම පොදු බෙදුම්කරු සහ අවම පොදු ගුණාකාරය

පයිතන් 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

පයිතන් 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
Copied title and URL