Împărțire cu rest

Împărțirea cu rest este o operație  aritmetică care joacă un rol important în aritmetică , teoria numerelor , algebră și criptografie . Cel mai adesea, această operație este definită pentru numere întregi sau naturale după cum urmează [1] . Fie și să  fie numere întregi, iar împărțirea cu un rest („divizibil”) cu („divizor”) înseamnă găsirea numerelor întregi și astfel încât egalitatea să fie valabilă:

Astfel, rezultatele împărțirii cu rest sunt două numere întregi: numite coeficientul parțial al împărțirii și  restul împărțirii . Restului i se impune o condiție suplimentară: adică restul împărțirii trebuie să fie un număr nenegativ și în valoare absolută mai mic decât divizorul . Această condiție asigură unicitatea rezultatelor împărțirii cu un rest pentru toate numerele întregi, adică există o soluție unică a ecuației în condițiile de mai sus. Dacă restul este zero, se spune că este divizibil cu

Găsirea coeficientului parțial se mai numește și împărțirea întregului , iar găsirea restului unei diviziuni se numește luare a restului sau, în mod informal, împărțire modulo (cu toate acestea, ultimul termen ar trebui evitat, deoarece poate duce la confuzie cu diviziunea într-un inel sau grup de reziduuri prin analogie cu adunarea sau înmulțirea modulo ).

Exemple Examinare: Examinare: Examinare: Examinare:

Operația de împărțire cu un rest poate fi definită nu numai pentru numere întregi, ci și pentru alte obiecte matematice (de exemplu, pentru polinoame ), vezi mai jos .

Definiție

Rămânând strict în cadrul numerelor naturale , trebuie să distingem între împărțirea cu rest și împărțirea prin întreg, deoarece restul zero nu este un număr natural; în plus, câtul incomplet la împărțirea unui număr mai mic la unul mai mare ar trebui să fie egal cu zero, ceea ce duce și dincolo de numerele naturale. Toate aceste restricții artificiale complică în mod inutil formulările, astfel încât sursele de obicei fie iau în considerare seria naturală extinsă , inclusiv zero [2] , fie teoria este formulată imediat pentru numere întregi, așa cum s-a indicat mai sus [1] .

Pentru a calcula câtul parțial al împărțirii la un număr pozitiv , împărțiți (în sensul obișnuit) la și rotunjiți rezultatul în jos la cel mai apropiat număr întreg:

când .

unde semi-parantezele denotă luarea părții întregi a . Valoarea coeficientului incomplet vă permite să calculați valoarea restului utilizând formula:

Pentru un divizor negativ, trebuie să rotunjiți câtul în sus:

când .

Operația „mod” și relația cu comparațiile

Valoarea restului poate fi obținută prin operația binară de „luare a restului” din împărțirea cu , notată cu mod :

Această notație nu trebuie confundată cu notația de comparație modulo . Formula pentru a presupune efectuarea unei comparații:

cu toate acestea, implicația inversă nu este adevărată în general. Și anume, această comparație nu implică îndeplinirea inegalității necesare pentru a fi un rest.

În programare

Operația de calcul a coeficientului parțial și a restului în diferite limbaje de programare
Limba
coeficient incomplet
Rest Semnul de rest
ActionScript % Dividend
Ada mod Divizor
rem Dividend
DE BAZĂ \ MOD Nedefinit
C (ISO 1990) / % Nedefinit
C (ISO 1999) / % Divizibil [3]
C++ (ISO 2003) / % Nedefinit [4]
C++ (ISO 2011) / % Divizibil [5]
C# / % Dividend
fuziune la rece MOD Dividend
Lisp comun mod Divizor
rem Dividend
D / % Divizibil [6]
Delphi div mod Dividend
eiffel // \\ Dividend
Erlang div rem Dividend
Euforie remainder Dividend
Microsoft Excel (engleză) QUOTIENT() MOD() Divizor
Microsoft Excel (rusă) ЧАСТНОЕ() ОСТАТ()
producător de fișiere Div() Mod() Divizor
Fortran mod Dividend
modulo Divizor
GML (Game Maker) div mod Dividend
merge / % Dividend
Haskell div mod Divizor
quot rem Dividend
J |~ Divizor
Java / % Divizibil [7]
Math.floorDiv Math.floorMod Divizor (1,8+)
JavaScript .toFixed(0) % Dividend
Lua % Divizor
Mathematica Quotient Mod Divizor
MATLAB idivide(?, ?, 'floor') mod Divizor
idivide rem Dividend
MySQL DIV MOD
%
Dividend
Oberon DIV MOD +
Obiectiv Caml mod Nedefinit
Pascal div mod Divizibil [8]
Perl Nu % Divizor
PHP Nu [9] % Dividend
PL/I mod Divizor ( ANSI PL/I )
Prolog (ISO 1995) mod Divizor
PureBasic / Mod
%
Dividend
Piton // % Divizor
QBasic \ MOD Dividend
R %/% %% Divizor
RPG %REM Dividend
rubin / % Divizor
Sistem modulo Divizor
SenseTalk modulo Divizor
rem Dividend
tcl % Divizor
Verilog (2001) % Dividend
VHDL mod Divizor
rem Dividend
Visual Basic \ Mod Dividend

Găsirea restului unei diviziuni este adesea folosită în tehnologia computerelor și echipamentele de telecomunicații pentru a genera numere de verificare și a genera numere aleatorii într-un interval limitat, cum ar fi într-un generator de numere aleatoare congruente .

Denumirile operațiunii de preluare a restului în diferite limbaje de programare sunt prezentate în tabelul din dreapta. De exemplu, în Pascal , operația modcalculează restul unei diviziuni, iar operația divefectuează o diviziune întreagă, în care restul divizării este aruncat:

78 mod 33 = 12 78 div 33 = 2

Semnul de rest

Operația de preluare a restului în limbaje de programare poate returna un rezultat negativ (pentru un dividend sau divizor negativ). Există două opțiuni aici:

  • Semnul restului este același cu semnul dividendului: coeficientul incomplet se rotunjește spre zero.
  • Semnul restului este același cu semnul divizorului: coeficientul incomplet se rotunjește la .

Dacă o limbă are ambele tipuri de resturi, fiecare dintre ele are propriul său operator de coeficient parțial. Ambele operațiuni sunt vitale.

  • Există o sumă de copeici, pozitive sau negative. Transformați-l în ruble și copeici: și . Semnul restului este același cu semnul dividendului.n div 100n mod 100
  • Există un câmp de celule infinit, fiecare celulă are 16×16 pixeli. În care celulă se încadrează punctul ( , ) și care sunt coordonatele relativ la colțul din stânga sus al celulei? Raspuns: si respectiv. Semnul restului este același cu semnul divizorului.x div 16, y div 16(x mod 16, y mod 16)

Cum se programează dacă nu există o astfel de operație?

Coeficientul incomplet poate fi calculat prin împărțirea și luarea părții întregi: , unde , în funcție de sarcină, poate fi un „ etaj ” sau o trunchiere. Cu toate acestea, împărțirea aici este fracțională , care este mult mai lentă decât numărul întreg. Un astfel de algoritm este utilizat în limbaje care nu au tipuri întregi (foi de calcul separate , calculatoare programabile și programe matematice), precum și în limbaje de scripting , în care suprasarcina de interpretare depășește cu mult costul general al aritmeticii fracționale ( Perl , PHP ). ).

Dacă nu există nicio comandă, modrestul este programat ca .

Dacă pozitiv, iar semnul coincide cu semnul dividendului, nu este definit sau necunoscut, puteți utiliza formula pentru a găsi restul minim nenegativ .

Coeficientul incomplet și restul nenegativ al împărțirii cu o putere de doi  este o schimbare de biți (pentru numerele cu semn  , aritmetică) și .

Generalizări

Numerele reale

Dacă două numere și (altele decât zero ) aparțin mulțimii numerelor reale , pot fi împărțite la fără rest, iar câtul este, de asemenea, un număr real. Dacă câtul după condiție trebuie să fie un număr întreg , în acest caz restul va fi un număr real, adică se poate dovedi a fi fracționar .

Oficial:

dacă , atunci , unde . Exemplu

Împărțind 7,9 la 2,1 cu un rest dă:

(coeficient incomplet); (rest).

numere întregi gaussiene

Un număr gaussian  este un număr complex de forma , unde  sunt numere întregi. Pentru ei, împărțirea cu un rest poate fi definită: orice număr gaussian poate fi împărțit cu un rest la orice număr gaussian diferit de zero , adică reprezentat ca:

,

unde câtul și restul  sunt numere gaussiene și , totuși, spre deosebire de numerele întregi, restul diviziunii nu este definit în mod unic. De exemplu, poate fi împărțit în trei moduri:

Polinoame

La împărțirea cu un rest de două polinoame și pentru unicitatea rezultatului, se introduce o condiție: gradul restului de polinoame trebuie să fie strict mai mic decât gradul divizorului:

, și . Exemplu (restul 3 ), deoarece: .

Vezi și

Note

  1. 1 2 Divizia // Enciclopedia Matematică (în 5 volume) . - M . : Enciclopedia Sovietică , 1979. - T. 2.
  2. Potapov M. K., Alexandrov V. V., Pasichenko P. I. Algebra și analiza funcțiilor elementare. M.: Nauka, 1981, 560 p., S. 9.
  3. ISO/IEC 9899:TC2: Când numerele întregi sunt împărțite, rezultatul /operatorului este coeficientul algebric cu orice parte fracțională aruncată. [Acest lucru este adesea numit „trunchiere spre zero”.] ; în lista modificărilor 1999→TC1 și TC1→TC2 această modificare nu este listată.
  4. „ ISO/IEC 14882:2003: Limbaje de programare -- C++ ” , 5.6.4: Organizația Internațională pentru Standardizare , Comisia Electrotehnică Internațională , 2003  . „operatorul binar % dă restul din împărțirea primei expresii la a doua. …. Dacă ambii operanzi sunt nenegativi, atunci restul este nenegativ; dacă nu, semnul restului este definit de implementare” .
  5. N3242=11-0012 (schiță de lucru), același text ca C99
  6. Specificația limbajului D  (engleză)  (link inaccesibil) . dlang.org. Consultat la 29 octombrie 2017. Arhivat din original pe 3 octombrie 2017.
  7. Arnold, Ken, Gosling, J. , Holmes, D. Limbajul de programare Java. - Ed. a 3-a. - M., Sankt Petersburg, Kiev: Williams, 2001. - S. 173-174. — ISBN 5-8459-0215-0 .
  8. 1973 standard: div - diviziune cu trunchiere .
  9. PHP: Operatori aritmetici - Manual . Data accesului: 27 noiembrie 2014. Arhivat din original pe 19 noiembrie 2014.