# BigFibonacci

by Felix Thompson: Y13 Age ~18

## Introduction

Felix wrote this program (now available as a web version) as a solution to Problem 25 of Project Euler. It outputs all one thousand digits of the 4782nd Fibonacci number as shown below. Output Raspberry Pi Test

We modified the code to output Fibonacci numbers selected from the first three hundred, which are shown here, and confirmed in each case that the output was accurate. The program handles each digit as a separate element of an array. As usual, Felix comments the code so thoroughly that we feel no further explanation is necessary.

## The Code

```program BigFibonacci;
{

use this file except in compliance with the License, as described at
}
{\$mode objfpc}{\$H+}

uses
Classes, Math, SysUtils;
var
Number2, Number1, TempStore : array [1..1000] of integer;
Count, CurrentNum : integer;

begin
Number2 := 1;                                         //One is loaded as the first
CurrentNum := 1;                                         //Fibonacci number.

repeat
for Count := 1 to 1000 do
begin                                                //The larger number is stored
TempStore[Count] := Number2[Count];                //and then has the smaller added
Number2[Count] := Number2[Count] + Number1[Count]; //to it. The smaller number is then
Number1[Count] := TempStore[Count];                //replaced by the stored value.
end;

for Count := 1 to 1000 do
begin                                                //Each element stores one place value.
if Number2[Count] >= 10 then                       //If a value is larger than 10 it adds one
begin                                             //to the next element and subtracts 10
Number2[Count] := Number2[Count] - 10;          //from the current one.
Number2[Count + 1] := Number2[Count + 1] + 1;
end;
end;

CurrentNum := CurrentNum + 1;                          //Keeps track of the place in sequence.
until Number2 <> 0;                                //Repeats until 1000th digit is filled.

writeln('Place in sequence: ', CurrentNum);
writeln('Entire number, digit by digit:');
for Count := 1 to 1000 do
write(Number2[1001 - Count]);