Solution to problem
number 25 of Project Euler.
Question # 25
The Fibonacci sequence is defined by the recurrence relation:
Fn =
Fn1 + Fn2, where F1 =
1 and F2 = 1.
Hence the first 12 terms will be:
F1 =
1
F2 = 1
F3 = 2
F4 = 3
F5 = 5
F6 = 8
F7 = 13
F8 = 21
F9 = 34
F10 = 55
F11 = 89
F12 = 144
F2 = 1
F3 = 2
F4 = 3
F5 = 5
F6 = 8
F7 = 13
F8 = 21
F9 = 34
F10 = 55
F11 = 89
F12 = 144
The 12th term, F12, is the first term to contain three
digits.
What is the first term in the Fibonacci sequence to contain 1000
digits?
Solution # 25
/*****************************************************************************/
#include<stdio.h>
#include<conio.h>
#include<time.h>
int get_digits(long
double);
void main()
{
long double a,b,sum,i=0;
int digits,counter=2;
clrscr();
a=1;
b=1;
sum=0;
while(1)
{
counter++;
sum=a+b;
a=b;
b=sum;
digits=get_digits(sum);
if(digits==1000)
break;
i++;
}
printf("Answer =
%d",counter);
printf("\nEXECUTION TIME =
%f",clock()/(float)CLK_TCK);
getch();
}
int get_digits(long
double n)
{
int flag=0;
while(n>1)
{
flag++;
n/=10;
}
return flag;
}
/*******************************************************************************/
Note that this program will not run successfully in visual
studio because for VS we have the range of double and float exactly same and
that is insufficient for this program.
No comments:
Post a Comment