เครื่องคำนวณมอดุโล

เครื่องคำนวณมอดุโล (Modulo) ออนไลน์ ช่วยหาเศษเหลือจากการหารตัวเลขบวกและลบได้อย่างแม่นยำและรวดเร็ว พร้อมเรียนรู้วิธีหาค่าโมดูลัสด้วยตนเองอย่างง่ายดาย

มอดูลโอ

1

เกิดข้อผิดพลาดกับการคำนวณของคุณ

ทำความเข้าใจการดำเนินการมอดุโลและวิธีหาเศษเหลือ

อัปเดตล่าสุด: 17 กรกฎาคม 2569

ภาพประกอบสำหรับ เครื่องคำนวณมอดุโล

การดำเนินการมอดุโล (Modulo Operation) คือวิธีการทางคณิตศาสตร์ในการหา "เศษที่เหลือ" (Remainder) จากการหาร จุดเด่นของการหารเอาเศษแบบมอดุโลคือ ผลลัพธ์ที่ได้จะเป็นเศษเหลือที่เป็นจำนวนเต็มเสมอ

สมมติว่าคุณมีลูกสามคน และคุณซื้อลูกอมมาหนึ่งกล่องจำนวน 20 ชิ้น คุณต้องการแบ่งลูกอมทั้งหมดให้ลูกๆ อย่างเท่าเทียมและยุติธรรม ส่วนเศษลูกอมที่เหลือคุณตั้งใจจะเก็บไว้กินเองโดยไม่ต้องหักแบ่งครึ่ง เนื่องจากลูกๆ ของคุณยังอยู่ที่โรงเรียน คุณจึงสามารถคำนวณหาเศษที่เหลือหลังจากการหารล่วงหน้า เพื่อกินส่วนของคุณก่อนได้เลย

นี่คือตัวอย่างสถานการณ์ที่คุณสามารถใช้การดำเนินการมอดุโลได้ ในทางคณิตศาสตร์ สัญลักษณ์นี้มักจะเขียนแทนด้วยเครื่องหมาย % หรือคำว่า mod สำหรับตัวเลขจำนวนน้อยๆ คุณอาจจะสามารถคิดเลขในใจได้อย่างง่ายดาย แต่ถ้าคุณต้องจัดการกับตัวเลขที่มีค่ามาก การใช้เครื่องคิดเลขมอดุโล (Modulo Calculator) จะช่วยให้คุณคำนวณได้อย่างสะดวกและรวดเร็วมากยิ่งขึ้น

สมการพื้นฐานของการหารสามารถแสดงได้ดังนี้:

ตัวตั้ง = (ผลหาร × ตัวหาร) + เศษที่เหลือ

ในกรณีลูกอมของเรา:

  • ตัวตั้ง คือ 20 (จำนวนลูกอมทั้งหมด)
  • ตัวหาร คือ 3 (จำนวนเด็ก)
  • ผลหาร คือ 6 (จำนวนลูกอมที่เด็กแต่ละคนจะได้รับ)
  • เศษที่เหลือ คือ 2 (จำนวนลูกอมที่คุณสามารถเก็บไว้กินเองได้)

หากคุณนำการดำเนินการมอดุโลมาใช้ คุณสามารถเขียนให้อยู่ในรูปแบบสมการได้ดังนี้:

x % y = r

หรือ

x mod y = r

โดยที่ x คือตัวตั้ง, y คือตัวหาร และ r คือเศษที่เหลือ

ในกรณีของเราจะเขียนได้ว่า:

20 % 3 = 2

การคำนวณโดยไม่มีเครื่องคิดเลขมอดุโล

ลองมาดูสถานการณ์จำลองเพื่อความเข้าใจที่ชัดเจนยิ่งขึ้น

ตัวอย่าง

Wayan อาศัยอยู่ที่เกาะบาหลีและกำลังสร้างเกสต์เฮาส์ขนาดเล็กที่มีห้องพักจำนวนหกห้อง เขากำลังจะปูกระเบื้องห้องน้ำ Gede เพื่อนบ้านของเขาเพิ่งสร้างโรงแรมเสร็จ จึงเสนอขายกระเบื้องที่เหลือให้ Wayan ในราคาพิเศษ

Gede นับกระเบื้องในโกดังได้ 15 กล่อง แต่ละกล่องมีกระเบื้อง 4 แผ่น (ขนาด 60 × 60 ซม.) และยังมีเศษกระเบื้องเหลืออยู่อีก 2 แผ่นต่างหาก รวมทั้งหมดคือ 62 แผ่น ซึ่ง Gede ต้องการขายเหมาทั้งหมดในคราวเดียว

ตอนนี้ Wayan ต้องคำนวณว่า เขาจะสามารถปูกระเบื้องห้องน้ำได้กี่ห้องด้วยจำนวนกระเบื้องที่มี และจะมีเศษกระเบื้องเหลืออยู่กี่แผ่นที่ไม่ได้ใช้?

เราจะหาค่ามอดุโลด้วยตนเองโดยไม่ใช้เครื่องมือคำนวณ Mod ได้อย่างไร?

Wayan วัดขนาดห้องน้ำมาตรฐานในเกสต์เฮาส์ของเขา และพบว่าเขาต้องใช้กระเบื้องประมาณ 14 แผ่นต่อหนึ่งห้องน้ำ

มาเริ่มการคำนวณด้วยตนเองกันเลย!

  1. กำหนดตัวตั้ง (Dividend) ในกรณีนี้คือ 62 ซึ่งเป็นจำนวนกระเบื้องทั้งหมดที่เพื่อนบ้านเสนอขาย
  2. กำหนดตัวหาร (Divisor) ในกรณีนี้คือ 14 ซึ่งเป็นจำนวนกระเบื้องที่ต้องใช้ต่อหนึ่งห้องน้ำ
  3. นำตัวตั้งหารด้วยตัวหาร แล้วปัดเศษทิ้งให้เป็นจำนวนเต็ม 62 / 14 = 4.428571428571429 หรือปัดเป็น 4 นั่นหมายความว่า Wayan สามารถใช้กระเบื้องชุดนี้ปูห้องน้ำได้ทั้งหมด 4 ห้อง
  4. นำผลลัพธ์จำนวนเต็มที่ได้กลับไปคูณกับตัวหาร จะได้เป็น 4 × 14 = 56 นี่คือจำนวนกระเบื้องทั้งหมดที่จะถูกใช้สำหรับห้องน้ำทั้ง 4 ห้อง
  5. นำผลคูณที่ได้ไปลบออกจากตัวตั้งเริ่มต้น จะได้เป็น 62 - 56 = 6 นั่นหมายความว่า Wayan จะมีกระเบื้องเหลือเศษอยู่ 6 แผ่น

หากเขียนในรูปแบบที่สั้นและเข้าใจง่าย เราสามารถแสดงการคำนวณนี้ได้เป็น:

62 % 14 = 6

หรือ

62 mod 14 = 6

Wayan ตัดสินใจว่านี่เป็นข้อเสนอที่ดี เพราะในการปูกระเบื้องจริง ควรเผื่อกระเบื้องสำรองไว้ประมาณ 10% สำหรับการตัดแต่งหรือข้อผิดพลาดที่อาจเกิดขึ้น ส่วนห้องน้ำอีกสองห้องที่เหลือ เขาจะไปหาซื้อกระเบื้องจากร้านวัสดุก่อสร้างในพื้นที่เพิ่มเติม

แน่นอนว่า หากคุณใช้เครื่องคิดเลข Mod คุณจะได้ผลลัพธ์ทั้งหมดนี้ภายในเวลาเพียงไม่กี่วินาที

การสาธิตด้วยหน้าปัดนาฬิกาตามหลักการมอดุโล

สาขาหนึ่งของคณิตศาสตร์ที่เรียกว่า "เลขคณิตแบบมอดุลาร์" (Modular Arithmetic) จะเกี่ยวข้องกับโครงสร้างที่เป็นวงรอบหรือวัฏจักร วิธีที่ง่ายที่สุดในการนึกภาพสิ่งนี้คือ หน้าปัดนาฬิกาที่มีวงจรแบบ 12 ชั่วโมง สำหรับนักคณิตศาสตร์แล้ว หน้าปัดนาฬิกาก็คือตัวอย่างที่ชัดเจนของ mod 12

หากคุณต้องการคำนวณว่า เวลา 251 ชั่วโมงสามารถหารเป็นวันได้อย่างลงตัวโดยไม่มีเศษเหลือหรือไม่ คุณสามารถใช้สมการนี้ได้:

251 mod 24

ผลลัพธ์ที่ได้คือ 11 ดังนั้นคำตอบคือ "ไม่!" (เราจะตอบว่า "ใช่" ได้ก็ต่อเมื่อผลลัพธ์ที่ได้คือ 0)

ตัวอย่าง

Daniel ต้องการนั่งรถบัสจากแอตแลนตาไปไมอามี รถออกเดินทางเวลา 13:00 น. (บ่ายโมง) และใช้เวลาเดินทางบนถนน 15 ชั่วโมง เขาจะไปถึงจุดหมายในเวลาใด? สมการที่ใช้คือ:

1 + 15 mod 12

ผลลัพธ์คือ 4 ในกรณีนี้ เขาจะไปถึงในเวลา 4:00 น. (ตี 4)

การประยุกต์ใช้งานมอดุโล

การตรวจสอบเลขคู่และเลขคี่

หนึ่งในการประยุกต์ใช้งานตัวดำเนินการมอดุโล (Modulo Operator) ขั้นพื้นฐานที่สุดคือ การตรวจสอบว่าตัวเลขนั้นเป็นเลขคู่หรือเลขคี่ ซึ่งสามารถทำได้โดยสมการ x % 2 ที่จะให้ผลลัพธ์เป็น 0 หรือ 1 เสมอ ตัวเลขที่เป็นเลขคู่จะให้ค่ามอดุโลเป็น 0 เสมอเนื่องจากสามารถหารด้วย 2 ได้ลงตัว ในขณะที่เลขคี่จะเหลือเศษ 1 เสมอ

ตัวอย่างที่พบบ่อยที่สุดในการเขียนโปรแกรมคือ เมื่อคุณสร้างตารางในแอปพลิเคชันและต้องการสลับสีพื้นหลังของแถวให้อ่านง่าย เช่น แถวหนึ่งสีฟ้าอ่อน แถวถัดไปสีเทาอ่อน คุณเพียงแค่ใช้ฟังก์ชันมอดุโลเช็กว่าแถวปัจจุบันเป็นแถวคู่หรือแถวคี่

การแปลงหน่วย

การแปลงหน่วยถือเป็นอีกหนึ่งตัวอย่างคลาสสิกของการใช้การดำเนินการมอดุโลในชีวิตจริง มักจะใช้เมื่อเราต้องการแปลงหน่วยย่อย เช่น นาที, นิ้ว หรือเซนติเมตร ไปเป็นหน่วยที่ใหญ่ขึ้น เช่น ชั่วโมง, ไมล์ หรือกิโลเมตร ซึ่งการใช้ตัวเลขทศนิยมหรือเศษส่วนอาจไม่ตอบโจทย์เสมอไป

ตัวอย่างเช่น หากเราต้องการทราบว่า 373 นาที เท่ากับกี่ชั่วโมง การแสดงผลลัพธ์เป็น "6 ชั่วโมง 13 นาที" ย่อมเข้าใจง่ายกว่า "6.2166666666666666667 ชั่วโมง"

การหารแบบปกติ (ปัดเศษทิ้งเป็นจำนวนเต็ม) จะช่วยบอกจำนวน "ชั่วโมง" ส่วนตัวดำเนินการมอดุโลจะใช้เพื่อหาจำนวน "นาที" ที่เป็นเศษเหลือ ไม่ว่าคุณจะกำลังจัดการกับเวลา, ระยะทาง, ความดัน, พลังงาน หรือแม้แต่พื้นที่จัดเก็บข้อมูล คุณสามารถใช้วิธีการหารเอาเศษนี้เพื่อแปลงหน่วยได้อย่างสมบูรณ์แบบ

การคำนวณปีอธิกสุรทิน (Leap Year)

อีกตัวอย่างหนึ่งที่น่าสนใจของการใช้มอดุโลคือ การคำนวณว่าปีใดเป็นปีอธิกสุรทินหรือไม่

ปีอธิกสุรทิน (Leap Year) คือปีในปฏิทินสุริยคติที่มีวันเพิ่มขึ้นมาอีก 1 วัน ซึ่งก็คือวันที่ 29 กุมภาพันธ์ นั่นเอง

เมื่อวันที่ 1 มกราคม 45 ปีก่อนคริสตกาล จูเลียส ซีซาร์ (Gaius Julius Caesar) ผู้เผด็จการแห่งโรมัน ได้ประกาศใช้ปฏิทินที่พัฒนาขึ้นโดยนักดาราศาสตร์ชาวอเล็กซานเดรีย ปฏิทินนี้อิงตามการคำนวณที่ว่า ปีทางดาราศาสตร์หนึ่งปีมีประมาณ 365.25 วัน (365 วัน กับอีก 6 ชั่วโมง) ปฏิทินนี้ถูกเรียกว่า "ปฏิทินจูเลียน"

เพื่อชดเชยเศษ 6 ชั่วโมงที่เกินมา ซีซาร์จึงได้ริเริ่มระบบปีอธิกสุรทินขึ้นมา โดยกำหนดให้ 3 ปีติดต่อกันมี 365 วัน และทุกๆ ปีที่หารด้วย 4 ลงตัว จะมีการเพิ่มวันพิเศษ 1 วันในเดือนกุมภาพันธ์

อย่างไรก็ตาม เมื่อเวลาผ่านไป กลับพบว่าแค่กฎข้อนี้ยังไม่ครอบคลุมเพียงพอ

ความจริงแล้ว ปีสุริยคติ (เวลาที่โลกโคจรรอบดวงอาทิตย์จากฤดูใบไม้ผลิตลอดหนึ่งรอบ) มีความยาวนานประมาณ 365 วัน 5 ชั่วโมง 49 นาที ความแตกต่างระหว่างปีสุริยคติจริงกับปีปฏิทินจูเลียน (365 วัน 6 ชั่วโมง) จะเหลื่อมกันอยู่ประมาณ 11 นาที ซึ่งเมื่อผ่านไปประมาณ 128 ปี เวลา 11 นาทีเหล่านี้จะสะสมจนกลายเป็น 1 วันเต็มๆ

เพื่อแก้ไขความคลาดเคลื่อนที่สะสมมา และป้องกันการคลาดเคลื่อนในอนาคต สมเด็จพระสันตะปาปาเกรกอรีที่ 13 จึงได้ทำการปรับปรุงปฏิทินใหม่ในปี ค.ศ. 1582 พระองค์ได้เพิ่มกฎเกณฑ์พิเศษสำหรับปีอธิกสุรทิน โดยปีอธิกสุรทินยังคงเป็นปีที่หารด้วย 4 ลงตัว แต่จะมีข้อยกเว้นสำหรับปีที่หารด้วย 100 ลงตัว ปีเหล่านั้นจะเป็นปีอธิกสุรทินได้ก็ต่อเมื่อหารด้วย 400 ลงตัวเท่านั้น

ดังนั้น กฎสำหรับการกำหนดปีอธิกสุรทินจึงสรุปได้ดังนี้:

  • ปีที่หารด้วย 400 ลงตัว ถือเป็นปีอธิกสุรทิน
  • ปีที่หารด้วย 100 ลงตัว (แต่หาร 400 ไม่ลงตัว) ไม่ใช่ปีอธิกสุรทิน (ตัวอย่างเช่น ปี 1700, 1800, 1900, 2100, 2200, 2300)
  • ปีอื่นๆ ที่หารด้วย 4 ลงตัว ถือเป็นปีอธิกสุรทิน
  • ปีอื่นๆ นอกเหนือจากนี้ ไม่ใช่ปีอธิกสุรทิน

นั่นหมายความว่า ปี 1700, 1800 และ 1900 ไม่ใช่ปีอธิกสุรทิน เนื่องจากหารด้วย 100 ลงตัวแต่หารด้วย 400 ไม่ลงตัว ในขณะที่ปี 1600 และ 2000 ถือเป็นปีอธิกสุรทิน เนื่องจากหารด้วย 400 ลงตัว

กลับมาที่ปัญหาของเราเกี่ยวกับการนำมอดุโลมาใช้

เราสามารถกำหนดเงื่อนไขได้ว่า:

  • หาก (ปี mod 4 = 0) และ (ปี mod 100 ≠ 0) แสดงว่าเป็นปีอธิกสุรทิน
  • หาก (ปี mod 400 = 0) แสดงว่าเป็นปีอธิกสุรทิน
  • กรณีอื่นๆ นอกเหนือจากนี้ ไม่ใช่ปีอธิกสุรทิน

คุณสามารถเขียนสคริปต์ Python ง่ายๆ เพื่อตรวจสอบปีอธิกสุรทินได้ โค้ดจะมีหน้าตาดังนี้:

year = int(input('Enter year: '))

if (year%4 == 0 and year%100 != 0) or (year%400 == 0) :

	print(year, "is a leap year.")

else:

	print(year, "is not a leap year.")

ตัวอย่างการประยุกต์ใช้งานการดำเนินการมอดุโลในการเขียนโปรแกรมที่เป็นที่นิยมอื่นๆ ได้แก่:

  • การตรวจสอบตัวเลขว่าเป็นคู่หรือคี่
  • การรันคำสั่งเฉพาะกับทุกๆ ข้อมูลที่ N ในรายการ (List)
  • การควบคุมช่วงของตัวเลขให้อยู่ในขอบเขตที่กำหนด
  • การวนลูปผ่านตัวเลือกที่มีจำกัด (Circular arrays / อาร์เรย์แบบวงกลม)
  • การสลับหลักตัวเลข (Reversing numbers)
  • การแปลงข้อมูลจากเชิงเส้นให้เป็นรูปแบบเมทริกซ์ (Matrix)
  • การตรวจสอบว่าอาร์เรย์หนึ่งเป็นเวอร์ชันที่ถูกหมุนตำแหน่งของอีกอาร์เรย์หรือไม่
  • การทำระบบแบ่งหน้าเว็บ (Pagination)

เครื่องกำเนิดตัวเลขสุ่ม (Random Number Generator)

การจับคู่คณิตศาสตร์มอดุโลมักถูกใช้งานในฮาร์ดแวร์คอมพิวเตอร์และอุปกรณ์โทรคมนาคม เพื่อสร้างตัวเลขควบคุมและสร้างตัวเลขสุ่มในขอบเขตจำกัด ตัวอย่างเช่น วิธีคอนกรูเอนซ์เชิงเส้น (Linear Congruential Method) ซึ่งเป็นอัลกอริทึมการสุ่มตัวเลขที่ถูกคิดค้นโดย Derrick Henry Lehmer ในปี 1949

วิธีคอนกรูเอนซ์เชิงเส้น ทำงานภายใต้สมการ:

$$X_{n+1} = (a × X_n + c)\mod m$$

โดยที่:

  • m คือ ค่ามอดุโล (Modulo)
  • a คือ ตัวคูณ (Multiplier)
  • c คือ ค่าส่วนเพิ่ม (Increment) และ
  • X₀ คือ ค่าเริ่มต้น (Seed/Initial value)

ตัวอย่างเช่น หากเรากำหนด m = 11, X₀ = 9, a = 9, c = 9 เราจะได้ชุดตัวเลขสุ่มดังต่อไปนี้:

9, 2, 5, 10, 0, 9, 2, 5, 10, 0, 9

วิทยาการเข้ารหัสลับ (Cryptography)

นักวิทยาการเข้ารหัสลับ (Cryptographers) ชื่นชอบการใช้งานมอดุโลเป็นอย่างมาก เพราะเมื่อนำมาใช้กับตัวเลขที่มีขนาดใหญ่มากๆ คุณสามารถสร้างสิ่งที่เรียกว่า "ฟังก์ชันทางเดียว" (One-way function) ด้วยมอดุโลได้ ฟังก์ชันพิเศษเหล่านี้ทำให้คณิตศาสตร์สามารถคำนวณไปข้างหน้าได้ง่าย แต่เป็นเรื่องยากมากที่จะคำนวณย้อนกลับ

ลองนึกภาพตาม หากบอกว่า 9 คือผลลัพธ์ของการยกกำลัง คุณสามารถเดาได้ทันทีว่าเลขต้นทางคือ 3 คุณมองเห็นภาพรวมของกระบวนการทั้งหมดตั้งแต่ต้นจนจบ แต่ถ้าผมบอกคุณว่า 9 คือผลลัพธ์ที่เกิดจากการ mod 29 มันแทบจะเป็นไปไม่ได้เลยที่คุณจะเดาได้ว่าตัวเลขต้นทาง (Input) คืออะไร

นักเข้ารหัสลับประยุกต์ใช้แนวคิดนี้ เพื่อใช้การหาเศษเหลือนำไปสู่การสร้างตัวเลขเฉพาะขนาดใหญ่ ซึ่งเป็นหัวใจสำคัญในการสร้างคีย์การเข้ารหัสข้อมูลที่ปลอดภัย

บทสรุป

ไม่ว่าคุณจะพยายามแบ่งสิ่งของลงกล่องให้เท่าๆ กัน, อยากรู้ว่าตัวเลขหนึ่งหารอีกตัวเลขหนึ่งลงตัวหรือไม่ หรือแค่กำลังพยายามคำนวณเรื่องเวลา "การดำเนินการมอดุโล" จะเข้ามามีบทบาทเสมอ ในทุกสถานการณ์ที่กล่าวมา การหาเศษที่เหลือมีความสำคัญไม่แพ้การหาผลหารเลย

บางครั้งปัญหาการหารเอาเศษก็ดูตรงไปตรงมาและสามารถคิดในใจได้ แต่เมื่อตัวเลขเริ่มเยอะและมีความซับซ้อนมากขึ้น การเลือกใช้เครื่องคิดเลขมอดุโลออนไลน์ (Online Modulo Calculator) ย่อมเป็นทางเลือกที่ชาญฉลาด รวดเร็ว และแม่นยำที่สุดสำหรับคุณเสมอ