Data update
This commit is contained in:
parent
5150844a7d
commit
4bb20c9b71
7735 changed files with 38060 additions and 199180 deletions
|
|
@ -1,54 +0,0 @@
|
|||
-- The program is written in the programming language Ada. The name "Ada"
|
||||
-- has been chosen in honour of your friend,
|
||||
-- Augusta Ada King-Noel, Countess of Lovelace (née Byron).
|
||||
--
|
||||
-- This is an program to search for the smallest integer X, such that
|
||||
-- (X*X) mod 1_000_000 = 269_696.
|
||||
--
|
||||
-- In the Ada language, "*" represents the multiplication symbol, "mod" the
|
||||
-- modulo reduction, and the underscore "_" after every third digit in
|
||||
-- literals is supposed to simplify reading numbers for humans.
|
||||
-- Everything written after "--" in a line is a comment for the human,
|
||||
-- and will be ignored by the computer.
|
||||
|
||||
with Ada.Text_IO;
|
||||
-- We need this to tell the computer how it will later output its result.
|
||||
|
||||
procedure Babbage_Problem is
|
||||
|
||||
-- We know that 99_736*99_736 is 9_947_269_696. This implies:
|
||||
-- 1. The smallest X with X*X mod 1_000_000 = 269_696 is at most 99_736.
|
||||
-- 2. The largest square X*X, which the program may have to deal with,
|
||||
-- will be at most 9_947_269_69.
|
||||
|
||||
type Number is range 1 .. 99_736*99_736;
|
||||
X: Number := 1;
|
||||
-- X can store numbers between 1 and 99_736*99_736. Computations
|
||||
-- involving X can handle intermediate results in that range.
|
||||
-- Initially the value stored at X is 1.
|
||||
-- When running the program, the value will become 2, 3, 4, etc.
|
||||
|
||||
begin
|
||||
-- The program starts running.
|
||||
|
||||
-- The computer first squares X, then it truncates the square, such
|
||||
-- that the result is a six-digit number.
|
||||
-- Finally, the computer checks if this number is 269_696.
|
||||
while not (((X*X) mod 1_000_000) = 269_696) loop
|
||||
|
||||
-- When the computer goes here, the number was not 269_696.
|
||||
X := X+1;
|
||||
-- So we replace X by X+1, and then go back and try again.
|
||||
|
||||
end loop;
|
||||
|
||||
-- When the computer eventually goes here, the number is 269_696.
|
||||
-- E.e., the value stored at X is the value we are searching for.
|
||||
-- We still have to print out this value.
|
||||
|
||||
Ada.Text_IO.Put_Line(Number'Image(X));
|
||||
-- Number'Image(X) converts the value stored at X into a string of
|
||||
-- printable characters (more specifically, of digits).
|
||||
-- Ada.Text_IO.Put_Line(...) prints this string, for humans to read.
|
||||
-- I did already run the program, and it did print out 25264.
|
||||
end Babbage_Problem;
|
||||
Loading…
Add table
Add a link
Reference in a new issue