نتیجهای یافت نشد
هم اکنون نمیتوانیم چیزی با آن عبارت پیدا کنیم، سعی کنید چیز دیگری را جستجو کنید.
با ماشین حساب مدولو آنلاین، باقیمانده تقسیم اعداد مثبت، منفی، صحیح یا اعشاری را سریع و دقیق محاسبه کنید. همچنین آموزش محاسبه دستی مدول را اینجا بخوانید.
مدول
1
در محاسبه شما خطایی رخ داد.
عملگر مدولو (Modulo) یک روش ریاضی کاربردی برای یافتن باقیمانده عملیات تقسیم است. ویژگی اصلی مدولو این است که همواره باقیمانده تقسیم را به شکل یک عدد صحیح به شما برمیگرداند.
فرض کنید سه فرزند دارید و یک جعبه حاوی 20 عدد آبنبات خریدهاید. شما میخواهید این آبنباتها را به طور کاملاً مساوی و عادلانه بین فرزندانتان تقسیم کنید و آبنباتهای باقیمانده را (بدون نیاز به نصف کردن یا شکستن) برای خودتان بردارید. از آنجایی که فرزندانتان هنوز در مدرسه هستند، میتوانید پیش از رسیدن آنها، باقیمانده تقسیم را محاسبه کرده و سهم خودتان را میل کنید!
این دقیقاً همان موقعیتی است که عملگر مدولو به کار میآید. در ریاضیات و برنامهنویسی، این عملگر با علامت % یا عبارت mod نشان داده میشود. برای اعداد کوچک، انجام این محاسبات در ذهن آسان است؛ اما زمانی که با اعداد بزرگ و پیچیده سر و کار دارید، استفاده از یک ماشین حساب مدولو کارتان را بسیار راحتتر و دقیقتر خواهد کرد.
فرمول ریاضی این عملیات به صورت زیر نمایش داده میشود:
مقسوم = (خارج قسمت × مقسومعلیه) + باقیمانده
در مثال آبنباتهای ما:
با استفاده از عملیات مدولو، این معادله به شکل زیر نوشته میشود:
x % y = r
یا
x mod y = r
که در آن x مقسوم، y مقسومعلیه و r باقیمانده است.
بنابراین در مثال ما خواهیم داشت:
20 % 3 = 2
بیایید یک کاربرد واقعی و خاص را به عنوان مثال بررسی کنیم.
وایان در جزیره بالی زندگی میکند و در حال ساخت یک مهمانخانه کوچک با شش واحد مسکونی است. او قصد دارد حمامها را کاشیکاری کند. همسایهاش، گده، که به تازگی ساخت هتل خود را به پایان رسانده، پیشنهاد میدهد کاشیهای باقیماندهاش را با تخفیفی ویژه به وایان بفروشد.
گده حساب کرده است که 15 جعبه در انبار دارد؛ هر جعبه شامل 4 کاشی (60 × 60 سانتیمتر) است و دو کاشی هم به صورت جداگانه باقی مانده است. بنابراین در مجموع 62 کاشی وجود دارد و گده میخواهد تمام آنها را یکجا بفروشد.
حال وایان باید محاسبه کند که با این تعداد کاشی، دقیقاً چند حمام را میتواند به طور کامل کاشیکاری کند و چند کاشی احتمالاً بدون استفاده باقی خواهد ماند؟
چگونه میتوان باقیمانده تقسیم را به صورت دستی و بدون استفاده از ماشین حساب مدولو محاسبه کرد؟
وایان ابعاد یک حمام استاندارد در مهمانخانهاش را اندازهگیری کرد و متوجه شد که برای هر اتاق به حدود 14 کاشی نیاز دارد.
بیایید محاسبات را به صورت دستی انجام دهیم!
به بیان سادهتر و خلاصهتر، میتوانیم این عملیات ریاضی را به صورت زیر بنویسیم:
62 % 14 = 6
یا
62 mod 14 = 6
وایان تصمیم گرفت که این یک معامله عالی است؛ زیرا او همواره باید حدود 10٪ کاشی اضافه به عنوان پرتی (برای برشها یا اشتباهات احتمالی) در نظر بگیرد. همچنین او میتواند کاشیهای مورد نیاز برای دو حمام باقیمانده را از یک فروشگاه مصالح ساختمانی محلی تهیه کند.
البته یک ماشین حساب مدولو میتوانست این نتیجه را تنها در چند ثانیه به او ارائه دهد.
در ریاضیات، شاخهای به نام "حساب پیمانهای" (Modular arithmetic) وجود دارد که با ساختارهای چرخهای و تکرارشونده سروکار دارد. سادهترین راه برای درک این مفهوم، صفحه یک ساعت آنالوگ با چرخه 12 ساعته است. در زبان ریاضیات، صفحه ساعت دارای پیمانه یا mod 12 است.
اگر میخواهید بدانید آیا میتوانید 251 ساعت را به طور کامل و بدون باقیمانده به روزهای کامل تبدیل کنید، میتوانید عملیات زیر را انجام دهید:
251 mod 24
نتیجه این محاسبه 11 است، پس پاسخ "خیر" است! ما تنها در صورتی میتوانیم پاسخ "بله" بدهیم که نتیجه (باقیمانده) دقیقاً 0 باشد.
دانیل میخواهد با اتوبوس از آتلانتا به میامی سفر کند. اتوبوس ساعت 1 بعدازظهر حرکت میکند و مسیر 15 ساعت زمان میبرد. وقتی او به مقصد میرسد ساعت چند خواهد بود؟ محاسبه به این شکل است:
1 + 15 mod 12
که نتیجه آن 4 میشود. در این حالت، ساعت رسیدن او 4 صبح خواهد بود.
یکی از رایجترین و ابتداییترین کاربردهای عملگر مدولو، تشخیص زوج یا فرد بودن اعداد است. این کار به سادگی انجام میشود زیرا عبارت x % 2 همواره مقدار 0 یا 1 را برمیگرداند. اعداد زوج به دلیل بخشپذیری کامل بر 2، همیشه خروجی 0 دارند، در حالی که باقیمانده اعداد فرد همواره 1 خواهد بود.
پرکاربردترین نمونه این حالت در برنامهنویسی، زمانی است که میخواهید جدولی را در نرمافزار خود طراحی کنید و به دنبال ایجاد رنگهای یکدرمیان برای ردیفها هستید (مثلاً آبی روشن و خاکستری روشن). برنامهنویسان با استفاده از چک کردن مقدار مدولو متوجه میشوند که ردیف فعلی زوج است یا فرد و رنگ متناسب را اعمال میکنند.
تبدیل واحد یکی دیگر از نمونههای بارز استفاده عملی از عملیات مدولو است. ما معمولاً زمانی از این عملگر استفاده میکنیم که بخواهیم یک واحد کوچکتر (مانند دقیقه، اینچ یا سانتیمتر) را به یک واحد بزرگتر (مانند ساعت، مایل یا متر) تبدیل کنیم. استفاده از اعداد اعشاری در چنین موقعیتهایی همیشه منطقی و کاربردی نیست.
برای مثال، اگر بخواهیم بدانیم 373 دقیقه معادل چند ساعت است، بیان آن به صورت "6 ساعت و 13 دقیقه" بسیار قابلفهمتر از عدد اعشاری "6.2166666666666667 ساعت" است.
تقسیم استاندارد (با گرد کردن به سمت پایین) تعداد ساعات کامل را به ما میدهد و عملگر مدولو برای محاسبه دقیق دقایق باقیمانده استفاده میشود. فرقی نمیکند با زمان، مسافت، فشار، انرژی یا حجم ذخیرهسازی دادهها سروکار داشته باشید؛ این یک رویکرد جامع و بینقص برای تبدیل واحدهاست.
یکی دیگر از کاربردهای جذاب عملگر مدولو، بررسی کبیسه بودن یک سال تقویمی است.
سال کبیسه سالی است که یک روز اضافی در تقویم خورشیدی دارد و این روز در تقویم میلادی برابر با 29 فوریه است.
در 1 ژانویه سال 45 پیش از میلاد، ژولیوس سزار (دیکتاتور روم)، تقویمی را که توسط ستارهشناسان اسکندریه طراحی شده بود، معرفی کرد. این تقویم بر اساس این محاسبه بود که یک سال نجومی تقریباً 365.25 روز (365 روز و 6 ساعت) طول میکشد. این تقویم به نام تقویم ژولینی شناخته شد.
سزار برای جبران این اختلاف شش ساعته در هر سال، مفهوم سال کبیسه را معرفی کرد. طبق این سیستم، سه سال متوالی 365 روز داشتند و هر سالی که مضربی از عدد چهار بود، یک روز اضافی در ماه فوریه دریافت میکرد.
با این حال، با گذشت زمان مشخص شد که این قانون به تنهایی برای تطابق دقیق با نجوم کافی نیست.
طول واقعی یک سال استوایی (زمان بین دو اعتدال بهاری) دقیقتر محاسبه شد و برابر با 365 روز و 5 ساعت و 49 دقیقه بود. تفاوت بین این زمان و سال در تقویم ژولینی (365 روز و 6 ساعت) حدود 11 دقیقه بود. این یعنی در هر 128 سال، این 11 دقیقهها روی هم جمع شده و یک روز اضافیِ ناخواسته ایجاد میکردند.
برای جبران این خطای انباشته شده و جلوگیری از جابجایی فصلها در آینده، پاپ گریگوری سیزدهم در سال 1582 تقویم را اصلاح کرد. او قوانین جدیدی برای سالهای کبیسه وضع نمود. سالهای کبیسه همچنان مضربی از چهار بودند، اما یک استثنا برای سالهایی که مضربی از 100 بودند (مانند 1700 یا 1800) در نظر گرفته شد؛ این سالها تنها در صورتی کبیسه محسوب میشدند که بر 400 نیز بخشپذیر باشند.
قوانین تعیین سال کبیسه در سیستم گرگوری به این شرح شد:
بنابراین، سالهای 1700، 1800 و 1900 کبیسه نیستند، زیرا با وجود اینکه بر 100 بخشپذیرند، مضربی از 400 نیستند. اما سالهای 1600 و 2000 سالهای کبیسه هستند، زیرا بر 400 بخشپذیرند.
حال بیایید به روش محاسبه خودمان بازگردیم.
ما اکنون میدانیم که:
با استفاده از یک قطعه کد ساده در زبان برنامهنویسی پایتون (Python) و بهرهگیری از عملگر مدولو، میتوانید به راحتی سال کبیسه را تشخیص دهید. ساختار کد به این شکل است:
year = int(input('سال را وارد کنید: '))
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0) :
print(year, "سال کبیسه است.")
else:
print(year, "سال کبیسه نیست.")
برخی از رایجترین کاربردهای عملگر مدولو در دنیای برنامهنویسی عبارتند از:
یکی از کاربردهای پنهان مدولو، استفاده از آن در سختافزار کامپیوترها و تجهیزات ارتباطی برای ایجاد اعداد کنترلی و تولید اعداد تصادفی در یک محدوده مشخص است؛ مانند "تولیدکننده اعداد تصادفی همنهشتی خطی". دریک هنری لمر در سال 1949 روش همنهشتی خطی را برای این منظور پیشنهاد داد.
الگوریتم همنهشتی خطی بر اساس فرمول ریاضی زیر کار میکند:
$$X_{n+1} = (a × X_n + c)\mod m$$
که در آن:
به عنوان مثال، اگر مقادیر را برابر با m = 11, X₀ = 9, a = 9, c = 9 قرار دهیم، سری اعداد تصادفی زیر تولید میشود:
9، 2، 5، 10، 0، 9، 2، 5، 10، 0، 9
متخصصان رمزنگاری عاشق عملگر مدولو هستند! دلیل آن این است که وقتی مدولو با اعداد بسیار بزرگ ترکیب میشود، میتوان از آن برای ایجاد چیزی به نام "توابع یکطرفه" (One-way functions) استفاده کرد. ویژگی اصلی این توابع ویژه این است که محاسبه آنها در یک مسیر بسیار ساده و سریع است، اما مهندسی معکوس و یافتن ورودی اولیه از روی خروجی، عملاً غیرممکن یا بسیار دشوار است.
برای مثال، اگر به شما بگویند عدد 9 نتیجه توان دوم یک عدد است، به سرعت متوجه میشوید که ورودی اولیه عدد 3 بوده است. شما میتوانید کل فرآیند را به راحتی در ذهن خود تجسم کنید. اما اگر به شما بگویم که 9 نتیجه محاسبه مدولو با مقسومعلیه 29 است، پیدا کردن مقسومِ اولیه بینهایت دشوار خواهد بود.
رمزنگاران از این ویژگی منحصربهفرد برای تولید اعداد اول بسیار بزرگ و ساخت کلیدهای رمزنگاری غیرقابل نفوذ با استفاده از باقیمانده تقسیم بهره میبرند.
چه بخواهید مجموعهای از اشیاء را به طور مساوی دستهبندی کنید، چه به دنبال این باشید که بدانید آیا یک عدد دقیقاً بر عدد دیگری بخشپذیر است یا خیر، و چه بخواهید محاسبات دقیق زمانی انجام دهید، عملگر مدولو ابزاری است که همیشه به کارتان میآید. در تمام این موارد، یافتن مقدار باقیمانده به اندازه خودِ خارجقسمتِ تقسیم دارای اهمیت است.
در حالی که مسائل ساده را میتوان به صورت ذهنی و بدیهی حل کرد، در مواجهه با اعداد بزرگ و محاسبات پیچیدهتر، استفاده از یک ماشین حساب مدولو آنلاین بهترین، سریعترین و دقیقترین راهکار برای رسیدن به پاسخ است.