مودولو

في الحوسبة والرياضيات ، تُرجع عملية باقي القسمة الباقي أو الباقي الموقّع لعملية القسمة ، بعد قسمة عدد على آخر، ويسمى الأخير باقي القسمة .

بفرض وجود عددين موجبين a و n ، فإن a modulo n (يُختصر غالبًا بـ a mod n ) هو باقي قسمة a على n باستخدام طريقة إقليدس ، حيث a هو المقسوم و n هو المقسوم عليه . [ 1 ]

على سبيل المثال، فإن التعبير "5 mod 2" يُقيّم إلى 1، لأن 5 مقسومة على 2 يكون ناتج قسمتها 2 وباقي قسمتها 1، بينما "9 mod 3" يُقيّم إلى 0، لأن 9 مقسومة على 3 يكون ناتج قسمتها 3 وباقي قسمتها 0.

على الرغم من أن عملية باقي القسمة تُجرى عادةً باستخدام عددين صحيحين a و n ، فإن العديد من أنظمة الحوسبة تسمح الآن بأنواع أخرى من المعاملات العددية. يتراوح نطاق قيم عملية باقي القسمة على n بين 0 و n - 1. ويكون باقي قسمة a على 1 دائمًا 0، بافتراض أن a عدد صحيح.

عندما تكون إحدى القيمتين a أو n سالبة بالضبط، فإن التعريف الأساسي ينهار، وتختلف لغات البرمجة في كيفية تعريف هذه القيم.

صيغ مختلفة للتعريف

في الرياضيات ، تُعرف نتيجة عملية باقي القسمة بفئة التكافؤ ، ويمكن اختيار أي عنصر من عناصر هذه الفئة كممثل لها ؛ إلا أن الممثل المعتاد هو أصغر عدد صحيح غير سالب ينتمي إلى تلك الفئة (أي باقي القسمة الإقليدية ). [ 2 ] مع ذلك، توجد اصطلاحات أخرى ممكنة. تمتلك الحواسيب والآلات الحاسبة طرقًا متنوعة لتخزين الأعداد وتمثيلها؛ لذا فإن تعريفها لعملية باقي القسمة يعتمد على لغة البرمجة أو المكونات المادية الأساسية .

في جميع أنظمة الحوسبة تقريبًا، يكون ناتج القسمة q وباقي القسمة r لـ a مقسومًا علىن0{\displaystyle n\neq 0}استيفاء الشروط التالية:

لا يزال هذا يُبقي على غموض الإشارة إذا كان الباقي غير صفري: إذ يوجد خياران محتملان للباقي، أحدهما سالب والآخر موجب؛ ويُحدد هذا الاختيار أيًّا من ناتجي القسمة المتتاليين يجب استخدامه لتحقيق المعادلة (1). في نظرية الأعداد ، يُختار الباقي الموجب دائمًا، ولكن في الحوسبة، تختار لغات البرمجة الباقي بناءً على اللغة وإشارات a أو n . على سبيل المثال، تُعطي لغتا باسكال القياسية و ALGOL 68 باقيًا موجبًا (أو 0) حتى مع القواسم السالبة، وتترك بعض لغات البرمجة، مثل C90، الأمر للتنفيذ عندما يكون أيٌّ من n أو a سالبًا (انظر الجدول في قسم "  في لغات البرمجة " لمزيد من التفاصيل). بعض الأنظمة لا تُعرّف باقي قسمة a على 0، بينما تُعرّفه أنظمة أخرى على أنه a .

  •  الناتج ( q ) والباقي ( r ) كدوال للمقسوم ( a )، باستخدام القسمة المقتطعة 

    تستخدم العديد من التطبيقات القسمة المقتطعة ، والتي يتم تعريف ناتج القسمة فيها بواسطة q=trunc(أن){\displaystyle q=\operatorname {trunc} \left({\frac {a}{n}}\right)} أينtrunc{\displaystyle \operatorname {trunc} }هي دالة الجزء الصحيح ( التقريب نحو الصفر )، أي التقريب إلى الصفر من الأرقام المعنوية. وبالتالي، وفقًا للمعادلة ( 1 )، يكون للباقي نفس إشارة المقسوم لذا يمكن أن يأخذ 2| n | - 1 قيمة. ر=أ-نtrunc(أن){\displaystyle r=an\operatorname {trunc} \left({\frac {a}{n}}\right)}

  • الناتج والباقي باستخدام القسمة الصحيحة

    يروج دونالد كنوث [ 3 ] للقسمة المُقَرَّبة ، والتي يُعرَّف ناتج قسمتها بواسطة q=أن{\displaystyle q=\left\lfloor {\frac {a}{n}}\right\rfloor } أين{\displaystyle \lfloor \,\rfloor }هي دالة الجزء الصحيح ( التقريب إلى الأسفل ). وبالتالي، وفقًا للمعادلة ( 1 )، فإن الباقي له نفس إشارة المقسوم عليه n : ر=أ-نأن{\displaystyle r=an\left\lfloor {\frac {a}{n}}\right\rfloor }

  • الناتج والباقي باستخدام القسمة الإقليدية

    يروج ريموند تي. بوت [ 4 ] للقسمة الإقليدية ، والتي يكون باقيها غير سالبر{0،1،2...}{\displaystyle r\in \{0,1,2...\}}يتم تعريفها بواسطة ر:=أ-نq suجح تحأت 0ر<|ن|.{\displaystyle r:=a-nq\ \mathrm {بحيث} \ {\color {red}{0\leq r}}<|n|.}(تم إضافة التأكيد). وفقًا لهذا التعريف، يمكننا قول ما يلي عن ناتج القسمةq{\displaystyle q}: q=أ-رنZ=علامة(ن)أ-ر|ن|=علامة(ن)(أ|ن|-ر|ن|)=علامة(ن)أ|ن|\begin{aligned}q&=\frac{ar}{n}\in \mathbb{Z} \\&=\text{sgn}(n)\cdot\frac{ar}{|n|}\\&=\text{sgn}(n)\cdot\left(\frac{a}{|n|}-\frac{r}{|n|}\right)\\&=\text{sgn}(n)\cdot\left\lfloor\frac{a}{\left|n\right|}\right\rfloor \end{aligned}}} حيث sgn هي دالة الإشارة ،{\displaystyle \lfloor \,\rfloor }هي دالة التقريب إلى الأسفل ( التقريب إلى أقرب عدد صحيح أصغر )، وأ|ن|سؤال{\displaystyle {\frac {a}{|n|}}\in \mathbb {Q} }،ر|ن|سؤال{\displaystyle {\frac {r}{|n|}}\in \mathbb {Q} }هي أعداد نسبية .

    وبصورة مكافئة، يمكن للمرء بدلاً من ذلك تعريف ناتج القسمةqZ{\displaystyle q\in \mathbb {Z} }على النحو التالي: q:=علامة(ن)أ|ن|={أنلو ن>0أنلو ن<0{\displaystyle q:=\operatorname {sgn}(n)\left\lfloor {\frac {a}{\left|n\right|}}\right\rfloor ={\begin{cases}\left\lfloor {\frac {a}{n}}\right\rfloor &{\text{if }}n>0\\\left\lceil {\frac {a}{n}}\right\rceil &{\text{if }}n<0\\\end{cases}}} أين{\displaystyle \lceil \,\rceil }هي دالة السقف ( التقريب لأعلى ). وبالتالي، وفقًا للمعادلة ( 1 )، يكون الباقير{\displaystyle r}غير سالب : ر=أ-نq=أ-|ن|أ|ن|{\displaystyle r=a-nq=a-|n|\left\lfloor {\frac {a}{\left|n\right|}}\right\rfloor }

  • الناتج والباقي باستخدام القسمة المقربة

    تستخدم لغة Common Lisp ومعيار IEEE 754 القسمة التقريبية ، والتي يتم تعريف ناتج القسمة فيها بواسطة q=دائري(أن){\displaystyle q=\operatorname {round} \left({\frac {a}{n}}\right)} حيث أن دالة التقريب هي دالة التقريب ( تقريب النصف إلى عدد زوجي ). وبالتالي، وفقًا للمعادلة ( 1 )، يقع الباقي بين-ن2{\displaystyle -{\frac {n}{2}}}ون2{\displaystyle {\frac {n}{2}}}وتعتمد إشارتها على أي جانب من الصفر يقع ضمن هذه الحدود: ر=أ-ندائري(أن){\displaystyle r=an\operatorname {round} \left({\frac {a}{n}}\right)}

  • الناتج والباقي باستخدام القسمة على السقف

    تستخدم لغة Common Lisp أيضًا قسمة السقف ، والتي يتم تعريف ناتج قسمتها بواسطة q=أن{\displaystyle q=\left\lceil {\frac {a}{n}}\right\rceil } حيث ⌈⌉ هي دالة السقف ( التقريب لأعلى ). وبالتالي، وفقًا للمعادلة ( 1 )، فإن الباقي له إشارة معاكسة لإشارة المقسوم عليه : ر=أ-نأن{\displaystyle r=an\left\lceil {\frac {a}{n}}\right\rceil }

إذا كان كل من المقسوم والمقسوم عليه موجبين، فإن تعريفات التقريب المقتطع، والتقريب إلى أقرب عدد صحيح، والتقريب الإقليدي تتفق. إذا كان المقسوم موجبًا والمقسوم عليه سالبًا، فإن تعريفات التقريب المقتطع والتقريب الإقليدي تتفق. إذا كان المقسوم سالبًا والمقسوم عليه موجبًا، فإن تعريفات التقريب إلى أقرب عدد صحيح والتقريب الإقليدي تتفق. إذا كان كل من المقسوم والمقسوم عليه سالبين، فإن تعريفات التقريب المقتطع والتقريب إلى أقرب عدد صحيح تتفق.

ومع ذلك، فإن القسمة المبتورة تحقق الهوية(-أ)/ب=-(أ/ب)=أ/(-ب){\displaystyle ({-a})/b={-(a/b)}=a/({-b})}[ 5 ] [ 6 ]

الترميز

تحتوي بعض الآلات الحاسبة على زر دالة mod() ، كما تحتوي العديد من لغات البرمجة على دالة مشابهة، تُكتب على سبيل المثال mod( a , n ) . وتدعم بعضها أيضًا تعابير تستخدم "%" أو "mod" أو "Mod" كعامل باقي القسمة أو الباقي ، مثل أو .a % na mod n

بالنسبة للبيئات التي تفتقر إلى وظيفة مماثلة، يمكن استخدام أي من التعريفات الثلاثة المذكورة أعلاه.

الأخطاء الشائعة

عندما تكون نتيجة عملية حساب باقي القسمة هي إشارة المقسوم (تعريف مختصر)، فقد يؤدي ذلك إلى أخطاء مفاجئة.

على سبيل المثال، لاختبار ما إذا كان عدد صحيح فرديًا ، قد يميل المرء إلى اختبار ما إذا كان باقي قسمة العدد على 2 يساوي 1:

bool is_odd ( int n ) { return n % 2 == 1 ; }

لكن في لغة يكون فيها modulo له إشارة المقسوم، فإن ذلك غير صحيح، لأنه عندما يكون n (المقسوم) سالبًا وفرديًا، فإن n mod 2 يُرجع -1، وتُرجع الدالة خطأ.

أحد البدائل الصحيحة هو اختبار أن الباقي ليس صفرًا (لأن الباقي صفر هو نفسه بغض النظر عن الإشارات):

bool is_odd ( int n ) { return n % 2 != 0 ; }

أو باستخدام الحساب الثنائي:

bool is_odd ( int n ) { return n & 1 ; }

مشاكل الأداء

يمكن تنفيذ عمليات باقي القسمة بحيث يتم حساب باقي القسمة في كل مرة. في حالات خاصة، وعلى بعض الأجهزة، توجد بدائل أسرع. على سبيل المثال، يمكن التعبير عن باقي قسمة قوى العدد 2 كعملية AND منطقية (بافتراض أن x عدد صحيح موجب، أو باستخدام تعريف غير مقتطع):

x % 2n == x & (2n - 1)

أمثلة:

x % 2 == x & 1
x % 4 == x & 3
x % 8 == x & 7

في الأجهزة والبرامج التي تنفذ عمليات البت بكفاءة أكبر من عملية باقي القسمة، يمكن أن تؤدي هذه الأشكال البديلة إلى حسابات أسرع. [ 7 ]

قد تتعرف تحسينات المُصرّف على التعبيرات من الشكل حيث يُمثل قوة للعدد اثنين، وتُنفذها تلقائيًا على النحو التالي: ، مما يسمح للمبرمج بكتابة كود أكثر وضوحًا دون التأثير على الأداء. هذا التحسين البسيط غير ممكن في اللغات التي يكون فيها ناتج عملية باقي القسمة مُطابقًا لإشارة المقسوم (بما في ذلك C )، إلا إذا كان المقسوم عددًا صحيحًا غير مُوقّع . وذلك لأنه إذا كان المقسوم سالبًا، فسيكون باقي القسمة سالبًا أيضًا، بينما سيكون دائمًا موجبًا. في هذه اللغات، يجب استخدام التكافؤ بدلًا من ذلك، والذي يُعبّر عنه باستخدام عمليات OR وNOT وAND على مستوى البت.expression % constantconstantexpression & (constant-1)expression & (constant-1)x % 2n == x < 0 ? x | ~(2n - 1) : x & (2n - 1)

توجد أيضًا تحسينات لعمليات المعامل الثابت العامة عن طريق حساب القسمة أولاً باستخدام تحسين القاسم الثابت .

الخصائص (الهويات)

يمكن تحليل بعض عمليات حساب باقي القسمة أو توسيعها على غرار العمليات الرياضية الأخرى. قد يكون هذا مفيدًا في براهين التشفير ، مثل تبادل مفاتيح ديفي-هيلمان . تتطلب الخصائص المتعلقة بالضرب والقسمة والأس عمومًا أن يكون كل من a و n عددين صحيحين.

  • هوية:
  • معكوس:
  • التوزيعي:
    • ( أ + ب ) mod ن = [( أ mod ن ) + ( ب mod ن )] mod ن .
    • ab mod n = [( a mod n )( b mod n )] mod n .
  • القسمة (التعريف): a / b mod n = [( a mod n )( b −1 mod n )] mod n ، عندما يكون الجانب الأيمن معرفًا (أي عندما يكون b و n أوليين فيما بينهما )، وغير معرف خلاف ذلك.
  • الضرب العكسي: [( ab mod n )( b −1 mod n )] mod n = a mod n .

في لغات البرمجة

بالإضافة إلى ذلك، توفر العديد من أنظمة الحاسوب divmodوظيفةً تُنتج ناتج القسمة والباقي في آنٍ واحد. ومن الأمثلة على ذلك تعليمات x86DIV ، ودالة IDIVلغة البرمجة C div()، ودالة بايثونdivmod() .

التعميمات

موديولو مع إزاحة

أحيانًا يكون من المفيد أن تقع نتيجة باقي قسمة العدد n ليس بين 0 و n − 1 ، بل بين عدد ما d و d + n − 1. في هذه الحالة، يُسمى d إزاحة ، ويكون d = 1 شائعًا بشكل خاص.

لا يبدو أن هناك ترميزًا قياسيًا لهذه العملية، لذا دعونا نستخدم مؤقتًا a mod d n . وبالتالي، لدينا التعريف التالي: [ 122 ] x = a mod d n فقط في حالة dxd + n − 1 و x mod n = a mod n . من الواضح أن عملية باقي القسمة المعتادة تُقابل إزاحة صفرية: a mod n = a mod 0 n .

ترتبط عملية باقي القسمة مع الإزاحة بدالة الجزء الصحيح كما يلي: أتعديلدن=أ-نأ-دن.{\displaystyle a\operatorname {mod} _{d}n=a-n\left\lfloor {\frac {a-d}{n}}\right\rfloor .}

لرؤية ذلك، دعx=أ-نأ-دن{\textstyle x=a-n\left\lfloor {\frac {a-d}{n}}\right\rfloor }سنُبين أولاً أن x mod n = a mod n . وبشكل عام، فإن ( a + bn ) mod n = a mod n لجميع الأعداد الصحيحة b ؛ وبالتالي، فإن هذا صحيح أيضاً في الحالة الخاصة عندماب=-أ-دن{\textstyle b=-\!\left\lfloor {\frac {a-d}{n}}\right\rfloor }لكن هذا يعني أنxتعديلن=(أ-نأ-دن)تعديلن=أتعديلن{\textstyle x{\bmod {n}}=\left(a-n\left\lfloor {\frac {a-d}{n}}\right\rfloor \right)\!{\bmod {n}}=a{\bmod {n}}}وهذا ما أردنا إثباته. يبقى أن نُثبت أن dxd + n − 1. ليكن k و r عددين صحيحين بحيث يكون ad = kn + r حيث 0 ≤ rn − 1 (انظر القسمة الإقليدية ). عندئذٍأ-دن=ك{\textstyle \left\lfloor {\frac {a-d}{n}}\right\rfloor =k}، هكذاx=أ-نأ-دن=أ-نك=د+ر{\textstyle x=a-n\left\lfloor {\frac {a-d}{n}}\right\rfloor =a-nk=d+r}الآن، خذ 0 ≤ rn − 1 وأضف d إلى كلا الطرفين، لتحصل على dd + rd + n − 1. لكننا رأينا أن x = d + r ، لذا فقد انتهينا.

يتم تنفيذ عملية حساب باقي القسمة مع الإزاحة a mod d n في برنامج Mathematica على النحو التالي Mod[a, n, d]: [ 122 ]

تطبيق تعريفات باقي القسمة الأخرى باستخدام الاقتطاع

على الرغم من الأناقة الرياضية لقسمة كنوت المُقَرَّبة والقسمة الإقليدية، إلا أنه من الشائع عمومًا إيجاد باقي قسمة مُقَطَّعة في لغات البرمجة. يقدم ليجن الخوارزميات التالية لحساب القسمتين عند إعطاء قسمة عدد صحيح مُقَطَّعة:

/* دالة القسمة الإقليدية والأرضية، على غرار دالة ldiv() في لغة C */ typedef struct { /* هذا الهيكل جزء من مكتبة C القياسية stdlib.h، ولكن تم إعادة إنتاجه هنا للتوضيح */ long int quot ; long int rem ; } ldiv_t ;/* القسمة الإقليدية */ inline ldiv_t ldivE ( long numer , long denom ) { /* تُعرّف لغتا C99 و C++11 كلا هذين العددين على أنهما قسمة اقتطاعية. */ long q = numer / denom ; long r = numer % denom ; if ( r < 0 ) { if ( denom > 0 ) { q = q - 1 ; r = r + denom ; } else { q = q + 1 ; r = r - denom ; } } return ( ldiv_t ){. quot = q , . rem = r }; }/* القسمة على أقرب عدد صحيح */ inline ldiv_t ldivF ( long numer , long denom ) { long q = numer / denom ; long r = numer % denom ; if (( r > 0 && denom < 0 ) || ( r < 0 && denom > 0 )) { q = q - 1 ; r = r + denom ; } return ( ldiv_t ){. quot = q , . rem = r }; }

في كلتا الحالتين، يمكن حساب الباقي بشكل مستقل عن ناتج القسمة، ولكن ليس العكس. تم دمج العمليات هنا لتوفير مساحة على الشاشة، لأن الفروع المنطقية متطابقة.

انظر أيضاً

ملحوظات

  1. من الناحية الرياضية، هذان الخياران ليسا سوى اثنين من العدد اللانهائي من الخيارات المتاحة للمتباينة التي يحققها الباقي .
  2. يستخدم التقرير المنقح الخط الغامق للتمييز بين الكلمات الرئيسية والمعرفات، ولكنه يسمح بتنسيقات أخرى، بما في ذلك استخدام الأحرف الكبيرة (على سبيل المثالMOD).
  3. 1 2 ينعكس ترتيب الوسائط، أيα|ωيتم الحسابωتعديلα{\displaystyle \omega {\bmod {\alpha }}}، الباقي عند القسمة ωعلى α.
  4. تحدد معايير C99 و C++11 سلوك%اقتطاع البيانات. [ 14 ] أما المعايير السابقة فتترك هذا السلوك للتنفيذ. [ 15 ]
  5. يجب أن يكون المقسوم عليه موجباً، وإلا فهو غير معرف.
  6. كما ناقش بوت، فإن تعريفات ISO Pascal لـdivوmodلا تخضع لهوية القسمة D = d · ( D / d ) + D  % d ، وبالتالي فهي معطلة بشكل أساسي.
  7. عادةً ما تستخدم لغة بيرل عامل باقي القسمة الحسابي الذي لا يعتمد على نوع الجهاز. للاطلاع على أمثلة واستثناءات، راجع توثيق بيرل حول عوامل الضرب. [ 97 ]
  8. يتم تعريف الأمر بشكل مستقل عن الأوامر الموجودة في نطاقالاسم. [ 116 ]expr::tcl::mathop
  9. يتم تعريف الأمرexprمن حيث الأوامر الموجودة في نطاق::tcl::mathfuncالاسم. [ 119 ]

مراجع

  1. وايسشتاين، إريك دبليو. "التطابق" . وولفرام ماث وورلد . تم الاسترجاع في 27 أغسطس 2020 .
  2. كالدول، كريس. "بقايا" . معجم برايم . تم الاسترجاع في 27 أغسطس 2020 .
  3. كنوت، دونالد إي. (1972). فن برمجة الحاسوب . أديسون-ويسلي.
  4. بوت، ريموند ت. (أبريل 1992). "التعريف الإقليدي للدالتين div و mod" . معاملات ACM في لغات البرمجة والأنظمة . 14 (2). مطبعة ACM (نيويورك، نيويورك، الولايات المتحدة الأمريكية): 127-144 . doi : 10.1145/128861.128862 . hdl : 1854/LU-314490 . S2CID 8321674 . 
  5. بيترسون، دكتور (5 يوليو 2001). "دالة باقي القسمة والأعداد السالبة" . منتدى الرياضيات - اسأل دكتور الرياضيات . مؤرشف من الأصل في 22 أكتوبر 2019. تم الاطلاع عليه في 22 أكتوبر 2019 .
  6. "Ada 83 LRM، القسم 4.5: المعاملات وتقييم التعبيرات" . archive.adaic.com . تم الاطلاع عليه بتاريخ 2025-03-03 .
  7. هورفاث، آدم (5 يوليو 2012). "قسمة أسرع وعملية باقي القسمة - قوة الاثنين" .
  8. "توثيق الكلمات المفتاحية في لغة ABAP" . help.sap.com . 2024. تم الاطلاع عليه بتاريخ 18-01-2026 .
  9. "المشغلون - مرجع واجهة برمجة تطبيقات Adobe ActionScript® 3 (AS3)" . help.adobe.com . تم الاطلاع عليه بتاريخ 19-01-2026 .
  10. 1 2 ISO/IEC 8652:2012 - تكنولوجيا المعلومات - لغات البرمجة - Ada . ISO ، IEC . 2012. القسم 4.5.5 عوامل الضرب.
  11. التقرير المنقح حول لغة الخوارزميات Algol 68. IFIP WG2.1 . 1973. القسم 10.2.3.3.ن.
  12. "awk" . pubs.opengroup.org . تم الاطلاع عليه بتاريخ 19-01-2026 .
  13. "bc" . pubs.opengroup.org . تم الاطلاع عليه بتاريخ 23-05-2026 .
  14. "مواصفات C99 (ISO/IEC 9899:TC2)" (ملف PDF) . 2005-05-06. القسم 6.5.5 عوامل الضرب . تم الاطلاع عليه بتاريخ 16 أغسطس 2018 .
  15. ISO/IEC 14882:2003: لغات البرمجة - C++ . المنظمة الدولية للتوحيد القياسي (ISO)، اللجنة الكهروتقنية الدولية (IEC). 2003. القسم 5.6.4. يُنتج عامل النسبة المئوية الثنائي ( %) باقي قسمة التعبير الأول على الثاني. .... إذا كان كلا المعاملين غير سالبين، فإن الباقي يكون غير سالب؛ وإلا، فإن إشارة الباقي تُحدد حسب التنفيذ. 
  16. ISO/IEC 9899:1990: لغات البرمجة – C. ISO ، IEC . 1990. القسم 7.5.6.4. تُرجع الدالة fmod القيمة x - i * y ، حيث i عدد صحيح بحيث إذا كانت y غير صفرية، فإن النتيجة لها نفس إشارة x وقيمتها المطلقة أقل من قيمة y المطلقة .
  17. ISO/IEC 9899:1999: لغات البرمجة — C. ISO ، IEC . 1999. القسم 7.12.10.2. تحسب الدوال الباقي المطلوب بموجب IEC 60559.remainderx REM y
  18. "التعبيرات - مواصفات لغة C#" . learn.microsoft.com . تم الاطلاع عليه بتاريخ 19 يناير 2026 .
  19. 1 2 dotnet-bot. "Math.IEEERemainder(Double, Double) Method (System)" . Microsoft Learn . تم الاسترجاع في 4 أكتوبر 2022 .
  20. "clojure.core - توثيق واجهة برمجة تطبيقات Clojure v1.10.3" . clojure.github.io . تم ​​الاطلاع عليه بتاريخ 16 مارس 2022 .
  21. "clojure.core - توثيق واجهة برمجة تطبيقات Clojure v1.10.3" . clojure.github.io . تم ​​الاطلاع عليه بتاريخ 16 مارس 2022 .
  22. 1 2 ISO/IEC JTC 1/SC 22/WG 4 (يناير 2023). ISO/IEC 1989:2023 – لغة البرمجة كوبول . ISO .
  23. عوامل تشغيل CoffeeScript
  24. ISO/IEC JTC 1/SC 22 (فبراير 2012). ISO/IEC 23271:2012 — تكنولوجيا المعلومات — البنية التحتية للغة المشتركة (CLI) . ISO . §§ III.3.55–56.
  25. 1 2 "CLHS: Function MOD, REM" . www.lispworks.com . تم الاطلاع عليه بتاريخ 2026-01-20 .
  26. "mod() - CSS: Cascading Style Sheets | MDN" . developer.mozilla.org . 2024-06-22 . تم الاطلاع عليه بتاريخ 2024-10-23 .
  27. "rem() - CSS: Cascading Style Sheets | MDN" . developer.mozilla.org . 2024-10-15 . تم الاطلاع عليه بتاريخ 2024-10-23 .
  28. "التعبيرات - لغة البرمجة D" . dlang.org . تم الاطلاع عليه بتاريخ 2021-06-01 .
  29. "operator % method - num class - dart:core library - Dart API" . api.dart.dev . تم الاسترجاع في 2021-06-01 . 
  30. "طريقة الباقي - فئة الرقم - مكتبة دارت: الأساسية - واجهة برمجة تطبيقات دارت" . api.dart.dev . تم الاسترجاع في 2021-06-01 .
  31. "dc، آلة حاسبة ذات دقة اختيارية" . www.gnu.org . مؤرشف من الأصل بتاريخ 10 ديسمبر 2025. تم الاطلاع عليه بتاريخ 23 مايو 2026 .
  32. "Kernel — Elixir v1.11.3" . hexdocs.pm . تم الاطلاع عليه بتاريخ 28-01-2021 .
  33. "Integer — Elixir v1.11.3" . hexdocs.pm . تم الاطلاع عليه بتاريخ 28-01-2021 .
  34. "الأساسيات - النواة 1.0.5" . package.elm-lang.org . تم الاطلاع عليه بتاريخ 16-03-2022 .
  35. "الأساسيات - النواة 1.0.5" . package.elm-lang.org . تم الاطلاع عليه بتاريخ 16-03-2022 .
  36. "Erlang -- math" . erlang.org . تم الاطلاع عليه بتاريخ 2021-06-01 .
  37. "OpenEuphoria: Euphoria v4.0" . openeuphoria.org . تم الاطلاع عليه بتاريخ 20 يناير 2026 .
  38. "OpenEuphoria: Euphoria v4.0" . openeuphoria.org . تم الاطلاع عليه بتاريخ 20 يناير 2026 .
  39. "18. مكتبة F#، FSharp.Core.dll - مواصفات لغة F#" . fsharp.github.io . تم ​​الاطلاع عليه بتاريخ 19 يناير 2026 .
  40. "mod ( xy -- z ) - توثيق العوامل" . docs.factorcode.org . تم الاطلاع عليه بتاريخ 21-01-2026 .
  41. "rem ( xy -- z ) - توثيق العوامل" . docs.factorcode.org . تم الاطلاع عليه بتاريخ 21-01-2026 .
  42. "معالجة وخصائص القيم العددية - لغة برمجة فورتران" . fortran-lang.org . تم الاطلاع عليه بتاريخ 22-05-2026 .
  43. "معالجة وخصائص القيم العددية - لغة برمجة فورتران" . fortran-lang.org . تم الاطلاع عليه بتاريخ 22-05-2026 .
  44. ↑ المعهد الوطني الأمريكي للمعايير (28 يناير 1987). لغات البرمجة - لغة بيسك الكاملة . نيويورك: المعهد الوطني الأمريكي للمعايير. § 5.4.4. X modulo Y، أي XY*INT(X/Y).
  45. ↑ المعهد الوطني الأمريكي للمعايير (28 يناير 1987). لغات البرمجة - لغة بيسك الكاملة . نيويورك: المعهد الوطني الأمريكي للمعايير. § 5.4.4. دالة الباقي، أي XY*IP(X/Y).
  46. "مواصفات لغة GLSL، الإصدار 4.50.7" (ملف PDF) . القسم 5.9: التعبيرات. إذا كان كلا المعاملين غير سالبين، فإن الباقي يكون غير سالب. وتكون النتائج غير مُعرَّفة إذا كان أحد المعاملين أو كلاهما سالبًا.
  47. "مواصفات لغة GLSL، الإصدار 4.50.7" (PDF) . القسم 8.3 الوظائف الشائعة.
  48. "int" . وثائق محرك Godot . تم الاطلاع عليها بتاريخ 19-01-2026 .
  49. "@GlobalScope" . وثائق محرك Godot . تم الاطلاع عليها بتاريخ 19-01-2026 .
  50. "@GlobalScope" . وثائق محرك Godot . تم الاطلاع عليها بتاريخ 19-01-2026 .
  51. "@GlobalScope" . وثائق محرك Godot . تم الاطلاع عليها بتاريخ 19-01-2026 .
  52. "مواصفات لغة برمجة Go - لغة برمجة Go" . go.dev . تم الاطلاع عليه بتاريخ 28-02-2022 .
  53. "حزمة الرياضيات - الرياضيات - pkg.go.dev" . pkg.go.dev . تم الاسترجاع في 28-02-2022 .
  54. "حزمة كبيرة - math/big - pkg.go.dev" . pkg.go.dev . تم الاسترجاع في 28-02-2022 .
  55. "حزمة كبيرة - math/big - pkg.go.dev" . pkg.go.dev . تم الاسترجاع في 12 أبريل 2024 .
  56. 1 2 "6 أنواع وفئات مُعرَّفة مسبقًا" . www.haskell.org . تم الاطلاع عليه بتاريخ 22-05-2022 .
  57. "المعاملات الثنائية" . هاكس - مجموعة أدوات متعددة المنصات . تم الاسترجاع في 20 يناير 2026 .
  58. "المعاملات" . مايكروسوفت . 30 يونيو 2021. تاريخ الاسترجاع: 19 يوليو 2021. يُعرَّف المعامل % فقط في الحالات التي يكون فيها كلا الطرفين موجبين أو كلا الطرفين سالبين. وعلى عكس لغة C، فإنه يعمل أيضًا على أنواع البيانات ذات الفاصلة العائمة، بالإضافة إلى الأعداد الصحيحة. 
  59. "منصة جافا، الإصدار القياسي، مرجع واجهة برمجة تطبيقات جافا" . docs.oracle.com . تم الاطلاع عليه بتاريخ 24-05-2026 .
  60. "منصة جافا، الإصدار القياسي، مرجع واجهة برمجة تطبيقات جافا" . docs.oracle.com . تم الاطلاع عليه بتاريخ 25-05-2026 .
  61. "منصة جافا، الإصدار القياسي، مرجع واجهة برمجة تطبيقات جافا" . docs.oracle.com . تم الاطلاع عليه بتاريخ 25-05-2026 .
  62. "منصة جافا، الإصدار القياسي، مرجع واجهة برمجة تطبيقات جافا" . docs.oracle.com . تم الاطلاع عليه بتاريخ 25-05-2026 .
  63. "منصة جافا، الإصدار القياسي، مرجع واجهة برمجة تطبيقات جافا" . docs.oracle.com . تم الاطلاع عليه بتاريخ 25-05-2026 .
  64. "منصة جافا، الإصدار القياسي، مرجع واجهة برمجة تطبيقات جافا" . docs.oracle.com . تم الاطلاع عليه بتاريخ 25-05-2026 .
  65. "منصة جافا، الإصدار القياسي، مرجع واجهة برمجة تطبيقات جافا" . docs.oracle.com . تم الاطلاع عليه بتاريخ 25-05-2026 .
  66. "منصة جافا، الإصدار القياسي، مرجع واجهة برمجة تطبيقات جافا" . docs.oracle.com . تم الاطلاع عليه بتاريخ 25-05-2026 .
  67. "منصة جافا، الإصدار القياسي، مرجع واجهة برمجة تطبيقات جافا" . docs.oracle.com . تم الاطلاع عليه بتاريخ 25-05-2026 .
  68. "منصة جافا، الإصدار القياسي، مرجع واجهة برمجة تطبيقات جافا" . docs.oracle.com . تم الاطلاع عليه بتاريخ 25-05-2026 .
  69. "منصة جافا، الإصدار القياسي، مرجع واجهة برمجة تطبيقات جافا" . docs.oracle.com . تم الاطلاع عليه بتاريخ 25-05-2026 .
  70. "منصة جافا، الإصدار القياسي، مرجع واجهة برمجة تطبيقات جافا" . docs.oracle.com . تم الاطلاع عليه بتاريخ 25-05-2026 .
  71. "منصة جافا، الإصدار القياسي، مرجع واجهة برمجة تطبيقات جافا" . docs.oracle.com . تم الاطلاع عليه بتاريخ 25-05-2026 .
  72. "منصة جافا، الإصدار القياسي، مرجع واجهة برمجة تطبيقات جافا" . docs.oracle.com . تم الاطلاع عليه بتاريخ 25-05-2026 .
  73. "منصة جافا، الإصدار القياسي، مرجع واجهة برمجة تطبيقات جافا" . docs.oracle.com . تم الاطلاع عليه بتاريخ 25-05-2026 .
  74. "منصة جافا، الإصدار القياسي، مرجع واجهة برمجة تطبيقات جافا" . docs.oracle.com . تم الاطلاع عليه بتاريخ 25-05-2026 .
  75. "منصة جافا، الإصدار القياسي، مرجع واجهة برمجة تطبيقات جافا" . docs.oracle.com . تم الاطلاع عليه بتاريخ 25-05-2026 .
  76. "منصة جافا، الإصدار القياسي، مرجع واجهة برمجة تطبيقات جافا" . docs.oracle.com . تم الاطلاع عليه بتاريخ 25-05-2026 .
  77. "منصة جافا، الإصدار القياسي، مرجع واجهة برمجة تطبيقات جافا" . docs.oracle.com . تم الاطلاع عليه بتاريخ 25-05-2026 .
  78. "منصة جافا، الإصدار القياسي، مرجع واجهة برمجة تطبيقات جافا" . docs.oracle.com . تم الاطلاع عليه بتاريخ 25-05-2026 .
  79. "منصة جافا، الإصدار القياسي، مرجع واجهة برمجة تطبيقات جافا" . docs.oracle.com . تم الاطلاع عليه بتاريخ 25-05-2026 .
  80. "الرياضيات · لغة جوليا" . docs.julialang.org . تم الاطلاع عليه بتاريخ 2021-11-20 .
  81. "الرياضيات · لغة جوليا" . docs.julialang.org . تم الاطلاع عليه بتاريخ 2021-11-20 .
  82. "rem - لغة برمجة كوتلن" . كوتلن . تم الاسترجاع في 2021-05-05 .
  83. "mod - لغة برمجة Kotlin" . Kotlin . تم الاسترجاع في 2021-05-05 .
  84. "الدوال الرياضية" . help.libreoffice.org . تم الاطلاع عليه بتاريخ 21-01-2026 .
  85. "تعديل: الحصول على باقي القسمة - وثائق وولفرام" . reference.wolfram.com . تم الاطلاع عليه بتاريخ 25-05-2026 .
  86. "mod - باقي القسمة (عملية باقي القسمة) - MATLAB" . www.mathworks.com . مؤرشف من الأصل بتاريخ 15 يناير 2026. تم الاطلاع عليه بتاريخ 21 يناير 2026 .
  87. "rem - باقي القسمة - MATLAB" . www.mathworks.com . مؤرشف من الأصل بتاريخ 2026-01-01 . تم الاطلاع عليه بتاريخ 2026-01-21 .
  88. "أمر fmod" . help.autodesk.com . تم الاطلاع عليه بتاريخ 14-06-2026 .
  89. "وظيفة التعديل - دعم مايكروسوفت" . support.microsoft.com . تم الاطلاع عليه بتاريخ 21 يناير 2026 .
  90. أونيل، جوزيف ت . وآخرون (1976). معيار لغة MUMPS . غايثرسبيرغ، ماريلاند: وزارة التجارة الأمريكية، المعهد الوطني للمعايير والتكنولوجيا. القسم 3.3.1 عوامل التشغيل الحسابية الثنائية. doi : 10.6028/NBS.HB.118 . 
  91. "الفصل 3: لغة NASM" . NASM - برنامج التجميع الشبكي الإصدار 2.15.05 .
  92. "system" . nim-lang.org . تم الاطلاع عليه بتاريخ 15-06-2026 .
  93. "std/math" . nim-lang.org . تم الاطلاع عليه بتاريخ 15-06-2026 .
  94. "std/math" . nim-lang.org . تم الاطلاع عليه بتاريخ 15-06-2026 .
  95. "مكتبة OCaml : Stdlib" . ocaml.org . تم الاطلاع عليه بتاريخ 19-02-2022 . 
  96. "مكتبة OCaml : Stdlib" . ocaml.org . تم الاطلاع عليه بتاريخ 19-02-2022 . 
  97. وثائق بيرل
  98. "POSIX - واجهة بيرل لمعيار IEEE 1003.1 - متصفح بيرلدوك" . perldoc.perl.org . تاريخ الاسترجاع: 22-05-2026 .
  99. "PHP: عوامل التشغيل الحسابية - دليل المستخدم" . www.php.net . تاريخ الاسترجاع: 2021-11-20 .
  100. "PHP: fmod - دليل المستخدم" . www.php.net . تم الاطلاع عليه بتاريخ 2021-11-20 .
  101. "EuclideanRing" .
  102. "6. التعبيرات" . وثائق بايثون . تم الاطلاع عليه بتاريخ 21-01-2026 .
  103. "الرياضيات - الدوال الرياضية" . وثائق بايثون . تم الاطلاع عليه بتاريخ 21 يناير 2026 .
  104. "الرياضيات - الدوال الرياضية" . وثائق بايثون . تم الاطلاع عليه بتاريخ 21 يناير 2026 .
  105. QuantumWriter. "التعبيرات" . docs.microsoft.com . تم الاطلاع عليه بتاريخ 11-07-2018 .
  106. "R: عوامل التشغيل الحسابية" . search.r-project.org . تم الاطلاع عليه بتاريخ 24-12-2022 .
  107. "تعبيرات المعاملات - مرجع لغة رست" . doc.rust-lang.org . تم الاطلاع عليه بتاريخ 21-01-2026 .
  108. "F32 - الصدأ" .
  109. 1 2 r6rs.org
  110. "لغة أوامر الصدفة" . pubs.opengroup.org . تم الاطلاع عليه بتاريخ 2021-02-05 .
  111. 1 2 ANSI INCITS 319-1998 (R2002): تكنولوجيا المعلومات - لغات البرمجة - سمول توك . المعهد الوطني الأمريكي للمعايير (ANSI). 1998.
  112. "وثائق Solidity" . docs.soliditylang.org . تم الاطلاع عليه بتاريخ 17-10-2024 .
  113. "وثائق مطوري Apple" . developer.apple.com . تم الاطلاع عليه بتاريخ 20 نوفمبر 2021 .
  114. "وثائق مطوري Apple" . developer.apple.com . تم الاطلاع عليه بتاريخ 20 نوفمبر 2021 .
  115. "وثائق مطوري Apple" . developer.apple.com . تم الاطلاع عليه بتاريخ 20 نوفمبر 2021 .
  116. "صفحة دليل mathop - أوامر عوامل التشغيل الرياضية في Tcl" . www.tcl-lang.org . تم الاطلاع بتاريخ 22-05-2026 .
  117. "صفحة دليل expr - أوامر Tcl المدمجة" . www.tcl-lang.org . تم الاطلاع عليه بتاريخ 22-05-2026 .
  118. "صفحة دليل mathop - أوامر عوامل التشغيل الرياضية في Tcl" . www.tcl-lang.org . تم الاطلاع بتاريخ 22-05-2026 .
  119. "صفحة دليل الدوال الرياضية في لغة Tcl" . www.tcl-lang.org . تاريخ الاسترجاع: 22-05-2026 .
  120. 1 2 روسبرغ، أندرياس، محرر. (19 أبريل 2022). "مواصفات WebAssembly الأساسية: الإصدار 2.0" . اتحاد شبكة الويب العالمية . § 4.3.2 عمليات الأعداد الصحيحة.
  121. "وثائق Zig" . لغة برمجة Zig . تم الاطلاع عليه بتاريخ 18-12-2022 .
  122. 1 2 "Mod" . مركز توثيق لغات وأنظمة وولفرام . أبحاث وولفرام . 2020. تم الاطلاع عليه في 8 أبريل 2020 .
  • مودولوراما ، عرض متحرك لتمثيل دوري لجداول الضرب (شرح باللغة الفرنسية)