Skip to content

25.09.2011

Задача №2 — projecteuler.net

Each new term in the Fibonacci sequence is generated by adding the previous two terms. By starting with 1 and 2, the first 10 terms will be:

1, 2, 3, 5, 8, 13, 21, 34, 55, 89, …

By considering the terms in the Fibonacci sequence whose values do not exceed four million, find the sum of the even-valued terms.

Нужно посчитать суму всех четных числ Фибоначчи, не превышающих 4000000. Теперь мы перешли на c#. Там много непонятных классов, namespace’ов =)(как прост был javascript). В принципе решение находится в классе program, поэтому содержание его я и буду выкладывать.

Вернемся к задаче:

решение «в лоб»:

class Program
    {
        static void Main(string[] args)
        {
            long f1=1, f2=2, f3=0, sum=2;
            while(f3<4000000)
            {
                f3 = f2 + f1;
                f1 = f2;
                f2 = f3;
                if (f3 % 2 == 0)
                {
                    sum+=f3;
                }
            }
            Console.WriteLine(sum);
            Console.ReadKey();
        }
    }

 

решение чуть лучше, чем «в лоб»:

class Program
    {
        static int fibo(int n)
        {
            int f1, f2, sum, f3;
            f1 = f2 = 1;
            sum = 0;
            f3 = 2;
            while(f3<n)
            {
                sum += f3;
                f1 = f3 + f2;
                f2 = f1 + f3;
                f3 = f1 + f2;
            }
            return sum;
        }
        static void Main(string[] args)
        {
            Console.WriteLine(fibo(4000000));
            Console.ReadKey();
        }
    }

Share your thoughts, post a comment.

(required)
(required)

Note: HTML is allowed. Your email address will never be published.

Subscribe to comments