Eggs on the farm
Neema helps on her family's farm near Arusha, in Tanzania. One morning the hens have laid 347 eggs. The eggs go to market in trays, and each tray holds 30 eggs.
- How many trays can Neema fill?
- How many eggs will be left over?
- Next week the farm sells 23 full trays. How many eggs is that?
The first two questions are about dividing, the last one about multiplying. You already know how to add and subtract using tens and ones (addition, subtraction and place value). You may also know methods for multiplying and dividing. In this lesson we find out why those methods work, so that you never have to trust a rule you don't understand.
Equal groups and arrays
Multiplication counts equal groups. Four trays with eggs in each hold eggs.
We can also set things out in rows and columns, as an array. An array with rows of has objects. Now turn the array on its side: it becomes rows of . Nothing was added and nothing was taken away, so
That works for any array. Turning it never changes how many things are in it.
An array of unit squares
Change the width and height. Can you find two different rectangles with the same number of squares?
4 rows of 6 squares: multiply to count them all.
Area
6 × 4 = 24
24 square units
Area is counted in unit squares. Perimeter is counted in unit lengths, all the way around the edge.
The words and laws we need
Definition— multiplication
For whole numbers and , the product is the total number of objects in equal groups of . It is also the number of squares in a rectangle (an array) with rows and columns.
Multiplication obeys three laws. They are true for all whole numbers , and :
| Law | In symbols | Example |
|---|---|---|
| Commutative | ||
| Associative | ||
| Distributive |
Two more facts complete the toolkit: and .
Division often does not come out exactly. When it doesn't, something is left over.
Definition— division with remainder
Let and be whole numbers with . Dividing by means finding whole numbers and with
The number is the quotient (how many full groups) and is the remainder (how many are left over). We write remainder . Many people shorten "remainder" to "r", as in r .
The condition matters. If were or more, we could make one more full group!
Worked examples
Example— Calculating cleverly
- : think of as . So .
- : think of as . So .
- : swap and regroup to .
- Neema's trays of eggs: eggs.
Each step uses one of the laws. That is what makes these tricks correct, not just clever.
Example— Neema's eggs
How many trays of can be filled from eggs? Keep taking away: after trays, eggs are used and are left. Since , no more full trays can be made:
So remainder .
Example— Small and exact cases
- remainder , because and .
- remainder . A remainder of means the division is exact.
- remainder , because . No full group at all!
Example— A non-example
The equation is true, but it does not say that is remainder . The leftover is bigger than , so one more group of fits.
Example— What does the remainder mean?
The farm has eggs. Then . So trays can be filled. But to hold every egg the farm needs trays, because the last eggs need a tray too. The same division can answer different questions, so always ask what the question wants.
Explore: split, regroup and share
The distributive law as a picture. A rectangle squares tall and squares wide can be cut into two rectangles. Press "Pull the parts apart" and change the sliders:
Area and perimeter
Area counts the unit squares inside a shape; perimeter measures the distance around it.
7 × (6 + 4) = 7 × 6 + 7 × 4
= 42 + 28 = 70
70 square units
Two rectangles with the same height, side by side, make one big rectangle. So a × (b + c) = a × b + a × c: the distributive law.
a × (b + c) = a × b + a × c
Notice that , whatever numbers you choose.
Division with remainder as an array. Arrange dots in rows of . You get full rows and dots left over: . Try other row lengths. When are there no dots left over?
Rows of dots, and what is left over
Arrange dots in equal rows. When nothing is left over, you have found a factor pair.
23 = 1 × 23
23 dots make 1 full rows of 23, with nothing left over: 23 and 1 are factors of 23.
Every rectangle you can make with 23 dots (tap one):
23 has 2 factors: 1, 23
23 is prime: the only rectangle is a single row.
Why the methods work
Why the laws are true
- Commutative: turn the array (see above).
- Associative: build a box of cubes, long, wide and tall. Count it as layers of cubes, or as slices of cubes. Either way it is the same box, so .
- Distributive: a rectangle tall and wide splits into one by rectangle and one by rectangle, as in the explorer.
Why the written multiplication method works
Let us multiply . Place value says and . Draw a rectangle tall and wide, and cut it along those lines:
The distributive law, used twice, says exactly this:
The column method adds the same four pieces, grouped into rows:
4 7
× 2 3
-----
1 4 1 ← 47 × 3 = 3 × 40 + 3 × 7 = 120 + 21
9 4 0 ← 47 × 20 = 20 × 40 + 20 × 7 = 800 + 140
-----
1 0 8 1
In the first row, ones. We write in the ones column and carry the . Carrying is not a trick. Twenty ones are two tens, so we move them to the tens column. Then tens, plus the carried tens, makes tens: tens and hundred. The second row starts with a because we are multiplying by tens: .
Why long division works
Long division shares out one place value at a time. Here is , sharing among people:
- Hundreds. hundreds shared by is hundreds each, using . hundred is left.
- Trade the leftover hundred for tens. With the tens we had, that makes tens. Each person gets tens, using . tens are left.
- Trade those tens for ones. With the ones, that makes ones. Each person gets , using . is left.
Each person got hundreds, tens and ones, so
Why there is only one quotient and one remainder
Theorem— division with remainder
If , every whole number can be written as with , and there is only one such pair , .
Proof
There is always a pair. Take away from again and again, as long as at least is left. The amount left gets smaller each time, so you must stop. When you stop, fewer than are left: that is . The number of times you took away is .
There is only one pair. Picture the multiples of on a number line: . They are like fence posts, exactly apart. The number lies in exactly one gap, from some post up to (but not including) the next post . The remainder is how far is past that post, and it is less than because the next post is further on.
Could another pair work? A smaller quotient would put more than one whole gap past its post, so its "remainder" would be or more. A larger quotient would need a post beyond , and then the "remainder" would have to be less than . Neither is allowed.
∎
Why we cannot divide by zero
"" is a short way to say " is the number with ". So what would be? It would be a number with . But for every number . No number works, so has no answer.
And ? Now every number works, because is always true. A division that has every number as its answer tells us nothing, so has no answer either. That is why we say division by zero is undefined. (Division with remainder also needs : no remainder could be smaller than .)
Gideon's precise statements
- "." — True. .
- "For every whole number , ." — True. groups of make .
- "Multiplying always makes a number bigger." — False! , which is not bigger than . One counterexample is enough to show that an "always" statement is false.
- " is remainder ." — False. is a true equation, but the rule says the remainder must be less than . Being precise about the rule matters.
- "Some number times is ." — False. Every number times is .
For grown-ups · the same ideas in Lean, a proof checker
Lean is a computer program that checks proofs. Its whole numbers are called Nat. Each block below is a statement together with a proof that Lean has checked.
Calculating flexibly. The trick , proved for every from the distributive law, and the worked examples:
/-- `a × 98 = a × 100 − a × 2` for every whole number `a`: since `100 = 98 + 2`, the
distributive law gives `a × 100 = a × 98 + a × 2`, and taking away `a × 2` leaves `a × 98`.
So `7 × 98 = 700 − 14 = 686`. -/
theorem times_ninety_eight (a : Nat) : a * 98 = a * 100 - a * 2 := by
have h : a * 100 = a * 98 + a * 2 :=
calc a * 100 = a * (98 + 2) := rfl
_ = a * 98 + a * 2 := Nat.mul_add a 98 2
rw [h, Nat.add_sub_cancel]/-- The worked example: `7 × 98 = 7 × 100 − 7 × 2 = 686`. Lean evaluates both sides. -/
theorem seven_times_ninety_eight : 7 * 98 = 7 * 100 - 7 * 2 ∧ 7 * 98 = 686 := by decide/-- `25 × 36 = 900`, by regrouping: `36 = 4 × 9`, and the associative law lets us multiply
`25 × 4 = 100` first. Each line of the `calc` block is one step of the mental calculation. -/
theorem twenty_five_times_thirty_six : 25 * 36 = 900 :=
calc 25 * 36 = 25 * (4 * 9) := rfl
_ = (25 * 4) * 9 := (Nat.mul_assoc 25 4 9).symm
_ = 100 * 9 := rfl
_ = 900 := rfl/-- The distributive law `a × (b + c) = a × b + a × c`. This applies core Lean's
theorem `Nat.mul_add`. -/
theorem distrib_library (a b c : Nat) : a * (b + c) = a * b + a * c := Nat.mul_add a b cWhy the order of the factors does not matter. Lean defines multiplication as repeated addition: . So for Lean, means " copies of ", the opposite reading from our " groups of ". The commutative law says the two readings always agree. Lean proves it from the definition by induction: show it for , then show that if it holds for it holds for .
/-- `0 × a = 0`: any number of copies of `0` add up to `0`. Proved by induction on `a`, using
only Lean's definition `n * (m + 1) = n * m + n`. -/
theorem zero_mul_from_definition (a : Nat) : 0 * a = 0 := by
induction a with
| zero => rfl
| succ n ih => rw [Nat.mul_succ, ih]/-- `(a + 1) × b = a × b + b`: making every one of the `b` copies one bigger adds `b` in all.
Proved by induction on `b` from the definition of multiplication. -/
theorem succ_mul_from_definition (a b : Nat) : (a + 1) * b = a * b + b := by
induction b with
| zero => rfl
| succ n ih =>
calc (a + 1) * (n + 1) = (a + 1) * n + (a + 1) := Nat.mul_succ (a + 1) n
_ = a * n + n + (a + 1) := by rw [ih]
_ = (a * n + a) + (n + 1) := by omega
_ = a * (n + 1) + (n + 1) := by rw [Nat.mul_succ]/-- The commutative law `a × b = b × a`, proved from the definition of multiplication as
repeated addition (by induction on `b`, with the two lemmas above). Lean's `a * b` means
"`b` copies of `a`", the opposite reading from "`a` groups of `b`"; this theorem is exactly why
the choice does not matter. -/
theorem mul_comm_from_definition (a b : Nat) : a * b = b * a := by
induction b with
| zero => rw [Nat.mul_zero, zero_mul_from_definition]
| succ n ih => rw [Nat.mul_succ, ih, succ_mul_from_definition]The same law is also in Lean's library. The first proof was done here; this one just uses the library's theorem:
/-- The commutative law again, this time by applying core Lean's theorem `Nat.mul_comm`. -/
theorem mul_comm_library (a b : Nat) : a * b = b * a := Nat.mul_comm a bThe written method. The area model for any two-part numbers, then the example :
/-- The area model: `(a + b) × (c + d)` is the sum of the four partial products. Split the
first factor (distributive law on the right), then split each part again (on the left). -/
theorem area_model (a b c d : Nat) :
(a + b) * (c + d) = a * c + a * d + b * c + b * d :=
calc (a + b) * (c + d) = a * (c + d) + b * (c + d) := Nat.add_mul a b (c + d)
_ = (a * c + a * d) + (b * c + b * d) := by rw [Nat.mul_add a c d, Nat.mul_add b c d]
_ = a * c + a * d + b * c + b * d := (Nat.add_assoc (a * c + a * d) (b * c) (b * d)).symm/-- `23 × 47 = 1081`, as four partial products: `20 × 40 + 20 × 7 + 3 × 40 + 3 × 7`
`= 800 + 140 + 120 + 21`. The first step is `area_model` with `23 = 20 + 3` and `47 = 40 + 7`. -/
theorem twenty_three_times_forty_seven :
23 * 47 = 20 * 40 + 20 * 7 + 3 * 40 + 3 * 7 ∧ 23 * 47 = 1081 :=
⟨area_model 20 3 40 7, rfl⟩Division with remainder. First Neema's eggs. Then the theorem: a quotient and remainder always exist, and they are unique. The existence proof adds eggs one at a time. Each new egg either fits in the unfinished tray, or it fills that tray and the leftover pile starts again at . The uniqueness proof is the "fence posts" argument.
/-- 347 eggs fill 11 trays of 30, with 17 eggs left over: `347 = 11 × 30 + 17` and `17 < 30`.
Lean's `/` and `%` compute the same quotient and remainder. -/
theorem eggs_in_trays : 347 = 11 * 30 + 17 ∧ 17 < 30 ∧ 347 / 30 = 11 ∧ 347 % 30 = 17 := by
decide/-- Division with remainder always works: for `b > 0`, every `a` can be written as
`a = q × b + r` with `r < b`. The proof adds eggs one at a time (induction on `a`). Each new
egg either goes into the unfinished tray, or it completes that tray and the leftover pile
starts again at `0`. -/
theorem div_mod_exists (a b : Nat) (hb : 0 < b) : ∃ q r, a = q * b + r ∧ r < b := by
induction a with
| zero => exact ⟨0, 0, by rw [Nat.zero_mul], hb⟩
| succ n ih =>
obtain ⟨q, r, h, _hr⟩ := ih
by_cases hfit : r + 1 < b
· -- The new egg fits in the unfinished tray: the remainder grows by one.
exact ⟨q, r + 1, by omega, hfit⟩
· -- The new egg completes the tray (`r + 1 = b`): one more full tray, nothing left over.
have hrb : r + 1 = b := by omega
refine ⟨q + 1, 0, ?_, hb⟩
calc n + 1 = q * b + (r + 1) := by omega
_ = q * b + b := by rw [hrb]
_ = (q + 1) * b + 0 := by rw [Nat.succ_mul, Nat.add_zero]/-- The quotient and remainder are unique. If `q × b + r = q' × b + r'` with both remainders
less than `b`, then `q = q'` and `r = r'`. If `q` were smaller than `q'`, the right side
would be at least `(q + 1) × b = q × b + b`, which is more than `q × b + r`. -/
theorem div_mod_unique {b q r q' r' : Nat} (h : q * b + r = q' * b + r')
(hr : r < b) (hr' : r' < b) : q = q' ∧ r = r' := by
have hq : q = q' := by
rcases Nat.lt_trichotomy q q' with hlt | heq | hgt
· have hle : (q + 1) * b ≤ q' * b := Nat.mul_le_mul_right b hlt
rw [Nat.succ_mul] at hle
omega
· exact heq
· have hle : (q' + 1) * b ≤ q * b := Nat.mul_le_mul_right b hgt
rw [Nat.succ_mul] at hle
omega
subst hq
exact ⟨rfl, by omega⟩/-- Lean's own quotient `a / b` and remainder `a % b` satisfy `a = (a / b) × b + a % b` with
`a % b < b`. This applies the core theorems `Nat.div_add_mod'` and `Nat.mod_lt`. -/
theorem div_mod_library (a b : Nat) (hb : 0 < b) : a = a / b * b + a % b ∧ a % b < b :=
⟨(Nat.div_add_mod' a b).symm, Nat.mod_lt a hb⟩/-- The long division in the lesson: `953 ÷ 4` is `238` remainder `1`. -/
theorem long_division_953 : 953 = 238 * 4 + 1 ∧ 1 < 4 := by decideZero, and a counterexample.
/-- There is no answer to `5 ÷ 0`: no number `q` has `q × 0 = 5`, because `q × 0 = 0`. -/
theorem no_division_by_zero : ¬ ∃ q : Nat, q * 0 = 5 := by
intro ⟨q, hq⟩
rw [Nat.mul_zero] at hq
-- `hq : 0 = 5`, which is false.
exact absurd hq (by decide)/-- And `0 ÷ 0` has no single answer: *every* `q` satisfies `q × 0 = 0`.
This applies core Lean's `Nat.mul_zero`. -/
theorem zero_div_zero_every (q : Nat) : q * 0 = 0 := Nat.mul_zero q/-- "Multiplying always makes a number bigger" is false. One counterexample is enough:
`9 × 1 = 9` is not bigger than `9`. -/
theorem multiplying_need_not_enlarge : ¬ ∀ a b : Nat, a < a * b := by
intro h
have h91 : 9 < 9 * 1 := h 9 1
exact absurd h91 (by decide)What is not formalised here: Lean's whole numbers are not stored as rows of digits, so the column method and long division appear only through their key facts (the area model, and the long-division answer), not as digit-by-digit procedures. The Python experiment below runs the procedure digit by digit.
Margaret checks the methods
"""The written multiplication method, step by step, checked against Python.
The column method multiplies by one digit at a time, regrouping ("carrying")
ten ones as one ten, then adds the partial products shifted by place value.
The area model splits both numbers by place value and adds the same partial
products in a different grouping. We print the working for 47 x 23, compare
the digit-by-digit method with Python's built-in multiplication on every pair
of numbers below 200 and on random large pairs, and show what goes wrong when
the carries are forgotten.
"""
import random
def digits(n):
"""Digits of a whole number, ones first: digits(407) == [7, 0, 4]."""
if n < 0:
raise ValueError("whole numbers only")
out = [n % 10]
n //= 10
while n:
out.append(n % 10)
n //= 10
return out
def from_digits(ds):
"""Inverse of digits(): from_digits([7, 0, 4]) == 407."""
return sum(d * 10 ** k for k, d in enumerate(ds))
def times_one_digit(a, d, carry_on=True):
"""Multiply a by a single digit d as in the column method.
Returns (product, steps) where each step is (digit, digit*d + carry_in,
written digit, carry_out). With carry_on=False the carries are dropped,
which is the classic mistake.
"""
if not 0 <= d <= 9:
raise ValueError("d must be a single digit")
carry, written, steps = 0, [], []
for x in digits(a):
total = x * d + carry
new_carry = total // 10 if carry_on else 0
written.append(total % 10)
steps.append((x, total, total % 10, new_carry))
carry = new_carry
while carry:
written.append(carry % 10)
carry //= 10
return from_digits(written), steps
def partial_products(a, b, carry_on=True):
"""The rows of the column method: a times each digit of b, shifted."""
return [times_one_digit(a, d, carry_on)[0] * 10 ** k
for k, d in enumerate(digits(b))]
def column_multiply(a, b, carry_on=True):
"""Multiply by the written column method."""
return sum(partial_products(a, b, carry_on))
def area_pieces(a, b):
"""Area model: each non-zero place-value part of a times each part of b."""
def parts(n):
return [d * 10 ** k for k, d in enumerate(digits(n)) if d]
return [(x, y, x * y) for x in parts(a)[::-1] for y in parts(b)[::-1]]
def count_mismatches(pairs, carry_on=True):
"""How many pairs (a, b) the column method gets wrong."""
return sum(column_multiply(a, b, carry_on) != a * b for a, b in pairs)
def main():
a, b = 47, 23
print(f"Column method for {a} x {b}")
product, steps = times_one_digit(a, 3)
for x, total, write, carry in steps:
print(f" {x} x 3 + carry = {total}: write {write}, carry {carry}")
rows = partial_products(a, b)
print(f" row 1: {a} x 3 = {rows[0]}")
print(f" row 2: {a} x 20 = {a} x 2 x 10 = {rows[1]}")
print(f" total: {rows[0]} + {rows[1]} = {sum(rows)}")
pieces = area_pieces(a, b)
print("Area model: " + ", ".join(f"{x} x {y} = {p}" for x, y, p in pieces))
print(" " + " + ".join(str(p) for _, _, p in pieces)
+ f" = {sum(p for _, _, p in pieces)} (same pieces, regrouped)")
print()
small = [(x, y) for x in range(200) for y in range(200)]
rng = random.Random(2024)
big = [(rng.randrange(10 ** 5, 10 ** 6), rng.randrange(10 ** 3, 10 ** 4))
for _ in range(2000)]
print("Column method versus Python's built-in multiplication:")
print(f" all {len(small):,} pairs below 200: "
f"{count_mismatches(small)} mismatches")
print(f" {len(big):,} random 6-digit x 4-digit pairs: "
f"{count_mismatches(big)} mismatches")
wrong = count_mismatches(small, carry_on=False)
print("A broken method that forgets to carry:")
print(f" 47 x 3 gives {column_multiply(47, 3, carry_on=False)}, not 141;"
f" wrong on {wrong:,} of the {len(small):,} pairs")
print()
print("Epistemic status: the 40,000 small pairs are checked completely, so the")
print("method is correct for those; the random pairs are evidence only. Why it")
print("works for every pair is the lesson's argument: place value plus the")
print("distributive law.")
if __name__ == "__main__":
main()Checking all pairs below is a complete check of those pairs, but there are infinitely many pairs of numbers. The area-model argument covers them all.
"""Division with remainder: one quotient and one remainder, found by search.
For a = q x b + r there are many pairs (q, r) if r may be as large as we like,
but exactly one with 0 <= r < b. We find the answer for 347 eggs in trays of 30
by repeated subtraction, list every pair that would work without the rule
r < b, and then search exhaustively: for every a up to 500 and b from 1 to 12
there is exactly one pair with r < b, and it agrees with Python's divmod.
Finally we see that "5 divided by 0" has no candidate answer at all.
"""
def repeated_subtraction(a, b):
"""Take b away from a as often as possible; return (quotient, remainder)."""
if b <= 0:
raise ValueError("b must be positive")
if a < 0:
raise ValueError("a must be a whole number")
q = 0
while a >= b:
a -= b
q += 1
return q, a
def all_pairs(a, b, small_remainder=True):
"""Every (q, r) of whole numbers with q*b + r == a (and r < b if asked)."""
if b <= 0:
raise ValueError("b must be positive")
pairs = []
for q in range(a // b + 1):
r = a - q * b
if r >= 0 and (r < b or not small_remainder):
pairs.append((q, r))
return pairs
def exhaustive_check(max_a, max_b):
"""Return (cases, all unique?, all agree with divmod?)."""
cases, unique, agree = 0, True, True
for a in range(max_a + 1):
for b in range(1, max_b + 1):
cases += 1
pairs = all_pairs(a, b)
unique = unique and len(pairs) == 1
agree = agree and pairs == [divmod(a, b)]
return cases, unique, agree
def solutions_of_times_zero(target, search_up_to):
"""All q in 0..search_up_to with q * 0 == target."""
return [q for q in range(search_up_to + 1) if q * 0 == target]
def main():
q, r = repeated_subtraction(347, 30)
print(f"347 eggs, trays of 30: take away 30 a total of {q} times,"
f" {r} eggs left.")
print(f" 347 = {q} x 30 + {r}, and {r} < 30")
loose = all_pairs(347, 30, small_remainder=False)
shown = ", ".join(f"({a}, {b})" for a, b in loose[:4])
print(f"Without the rule r < 30 there are {len(loose)} pairs (q, r):")
print(f" {shown}, ..., {loose[-1]}")
print(f"With the rule r < 30 there is only {all_pairs(347, 30)}")
print()
cases, unique, agree = exhaustive_check(500, 12)
print(f"Every a from 0 to 500 and b from 1 to 12 ({cases:,} cases):")
print(f" exactly one pair with r < b every time: {unique}")
print(f" that pair is Python's divmod(a, b) every time: {agree}")
print()
print("Dividing by zero: q x 0 = 5 for q in 0..1000? "
f"{len(solutions_of_times_zero(5, 1000))} solutions.")
print(" q x 0 = 0 for q in 0..1000? "
f"{len(solutions_of_times_zero(0, 1000))} solutions: every q works.")
print()
print("Epistemic status: the search is complete for the 6,012 cases it")
print("checks, so uniqueness is certain there and nowhere else. The lesson's")
print("argument (multiples of b are b apart) proves it for every a and b > 0.")
print("The zero search is evidence; q x 0 = 0 for every q is the proof.")
if __name__ == "__main__":
main()Your turn
Take your time. You can open a hint whenever you like.
1. Whole-number arithmetic
Warm-upHumanUse the distributive law to work out in your head. (Hint: .)
2. Whole-number arithmetic
CoreHumanAmina works out like this: . Which laws make her method correct?
3. Whole-number arithmetic
CoreHumanUse the area model to work out . Split and , and add all four pieces.
4. Whole-number arithmetic
Warm-upHumanDivide by . What is the remainder?
5. Whole-number arithmetic
CoreHumanKofi says remainder . He checks: . Is his answer right?
6. Whole-number arithmetic
CoreHumanA farm has eggs, and each tray holds eggs. How many trays are needed to hold all the eggs?
7. Whole-number arithmetic
Warm-upHumanWhat is ?
8. Whole-number arithmetic
CoreHumanWhich of these products are not bigger than the first number? (Choose all that apply.)
9. Whole-number arithmetic
CoreFormalIn Lean, a / b is the quotient and a % b is the remainder when a is divided by b. Gideon wants to state precisely that the remainder is smaller than the number we divide by (for b > 0). Which statement says exactly that?
10. Whole-number arithmetic
StretchComputationalWrite a function divide(a, b) that finds the quotient and remainder by repeated subtraction: keep taking b away from a while at least b is left, counting how many times. Return the pair (q, r). You may assume a >= 0 and b > 0.
Things that trip people up
Misconception
"Multiplying always makes a number bigger." Not always: and . Later you will multiply by fractions such as , and then the answer is smaller: half of is .
Misconception
"The remainder can be any size." In , writing " remainder " is wrong even though . The remainder must be less than the number you divide by. If it isn't, another full group fits.
Misconception
"Carrying is just a trick." Carrying is regrouping: ten ones are one ten, and ten tens are one hundred. When ones, the "carried " is tens moving to the tens column.
Misconception
"" or "". Check by multiplying back: and , never . No number works, so has no answer.
Misconception
"Division is commutative too." It isn't: , but remainder . Only addition and multiplication can be done in either order.
Other ways of seeing
Geometry— Multiplication is area and volume
A geometer sees as the area of an by rectangle, and as the volume of a box. Then the laws become facts about shapes. The commutative law says that turning a rectangle through a right angle does not change its area. The distributive law says that cutting a rectangle into two pieces does not change the total area. The associative law says that a box has the same volume however you slice it. These pictures keep working long after whole numbers. Later you will use them for lengths that are fractions or decimals (area and perimeter).
Algebra— The laws are the real rules of the game
An algebraist notices that every clever calculation in this lesson used only a short list of laws. So anything that obeys those laws can be calculated with in the same way. For example, the area model works with letters: . Many other number systems obey the same laws, and mathematicians give such a system a name: a ring (rings). The laws you learn in primary school are, word for word, part of its definition.
Number theory— Remainders are the start of number theory
Division with remainder is where number theory begins. Repeating it gives Euclid's algorithm for the greatest common factor. Keeping only the remainder gives "clock arithmetic", where o'clock plus hours is o'clock because . See factors and primes, clock arithmetic and Euclid's algorithm.
Wonder further
What time will it be hours from now? Remainders can answer that, and they lead to a whole new kind of arithmetic. This trail is optional.
Wonder Trail · Optional · never gradedClock arithmeticIt's 9 o'clock. What time will it be in 5 hours — and in 29 hours? Can a clock teach us a whole new kind of arithmetic?Follow the trailMultiplying and dividing with sets
In the sets lesson you met the Cartesian product , the set of all pairs . If Juma has shirts and pairs of trousers, he can make outfits, one for each pair (shirt, trousers). In general, . That is where the multiplication sign in comes from.
Division with remainder sorts a set. Dividing eggs by splits the set of eggs into trays of and one leftover group of . These groups do not overlap and together they contain every egg. A splitting like this is called a partition.
A first glimpse of structure
Think of "multiply by " as a machine that changes any number into three times that number. Feed its output into a "multiply by " machine, and the result is the same as one "multiply by " machine. Chaining machines one after another is called composition (see one thing after another). The associative law says it does not matter how we bracket a chain of three machines. The machine "multiply by " changes nothing. These two rules — brackets don't matter, and there is a do-nothing machine — are the rules that define a category, an idea you can explore much later.
History and global context
- Egypt. The Rhind Mathematical Papyrus, copied by the scribe Ahmes around 1550 BCE from an older text, multiplies by doubling. To find : are times , and , so . This is the distributive law at work.
- Mesopotamia. Babylonian scribes, around 1800 BCE, worked in base . They kept tables of products and tables of reciprocals. To divide by a number, they multiplied by its reciprocal.
- China. The Tsinghua bamboo slips, dated to about 305 BCE, contain a decimal multiplication table. It is the oldest one known anywhere in the world.
- Greece. Euclid's Elements (around 300 BCE) finds the greatest common measure of two numbers by subtracting the smaller from the larger again and again. Division with remainder is hidden inside this method.
- India and the Islamic world. Indian mathematicians developed decimal place value with a symbol for zero. Around 825 CE, Muḥammad ibn Mūsā al-Khwārizmī of Baghdad wrote a book on calculating with these "Hindu numerals". Its Latin translation spread the methods to Europe, and the word algorithm comes from his name.
- Today. In her book Knowing and Teaching Elementary Mathematics (1999), Liping Ma compared primary-school teachers in China and the United States. Many of the Chinese teachers, though they had spent fewer years in school, explained the methods through place value and the laws. She called this a "profound understanding of fundamental mathematics".
Further reading
- Liping Ma, Knowing and Teaching Elementary Mathematics (1999). For teachers and parents; chapters 1–2 are about regrouping and multi-digit multiplication.
- Hung-Hsi Wu, Understanding Numbers in Elementary School Mathematics (2011). A careful account of why the standard algorithms work.
- Hans Magnus Enzensberger, The Number Devil (1997). A playful story about numbers for young readers.
- George Gheverghese Joseph, The Crest of the Peacock: Non-European Roots of Mathematics (1991). The history of calculation around the world.