Thursday 27 June 2013

PROJECT EULER SOLUTION # 25

Solution to problem number 25 of Project Euler.
Question # 25
The Fibonacci sequence is defined by the recurrence relation:
Fn = Fn−1 + Fn−2, 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
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