## Algorithms and Data Structures

**Algorithm**:
A process or set of rules used for calculation or problem-solving,
esp. with a computer.

**Program**:
A series of coded instructions to control the operation of a
computer or other machine.
[– concise OED '91]

#### E.g., long multiplication

Computers typically have single instructions to
multiply 32- and 64-bit^{*} integers
but what about integers much bigger than that?
Long-multiplication,
the usual manual method for multiplying large integers as taught in school,
is an example of an *algorithm*.
If the two integers have d1 and d2 digits respectively,
the algorithm requires approximately k×d1×d2 steps
to give its result, where k is a constant.

123 × 456 ------ 49200 123×4 left shift 2 columns 6150 123×5 left shift 1 column + 738 123×6 ------ 56088 ------

The HTML FORM below runs a demonstration of integer long-multiplication. Change the values, click the 'go' button and experiment:

There are much faster algorithms for the multiplication of big integers.

^{*}64-bits is equivalent to approximately 20 decimal digits.