

Charles Babbage, looking ahead to the sorts of problems his Analytical Engine would be able to solve, gave this example:

 What is the smallest positive integer whose square ends in the digits 269,696?

— Babbage, letter to Lord Bowden, 1837; see Hollingdale and Tootill, Electronic Computers, second edition, 1970, p. 125.

He thought the answer might be 99,736, whose square is 9,947,269,696; but he couldn't be certain.



Task[edit]
The task is to find out if Babbage had the right answer — and to do so, as far as your language allows it, in code that Babbage himself would have been able to read and understand.
As Babbage evidently solved the task with pencil and paper, a similar efficient solution is preferred.

For these purposes, Charles Babbage may be taken to be an intelligent person, familiar with mathematics and with the idea of a computer; he has written the first drafts of simple computer programmes in tabular form. [Babbage Archive Series L].



Motivation
The aim of the task is to write a program that is sufficiently clear and well-documented for such a person to be able to read it and be confident that it does indeed solve the specified problem.




 
(
  500:?number {A child knows that 269696 is larger than 500*500, 
               but not by much. It is safe to start the search with 500.}
&   whl  {'whl' is shorthand for 'while'. It announces the evaluation of
                            an expression that is repeated until it fails.}
  ' ( @(!number*!number:~(? 269696))  { ~(? 269696) is a pattern. It says 
                                       that it will not match numbers that do
                                       not end with the figures 269696.
                                       The question mark is there to match all
                                       the figures before 269696.}
    & !number:<99736                  { We should under no circumstance try
                                       numbers that are larger than 99736.}
    & 1+!number:?number               { If the number did not pass the test,
                                        we take the next number and repeat
                                        the test. }
    )
&   out
  $ ( str
    $ ( "The smallest number that ends with the figures 269696 when squared is "
        !number
        ", since the square of "
        !number
        " is "
        !number*!number
      )
    )
)
 