C # проблема с суммой четных чисел Фибоначчи - PullRequest
0 голосов
/ 11 декабря 2018

Я решаю проблемы со страницы Eurler.На самом деле я трачу много времени, пытаясь что-то сделать с моим кодом.Он правильно выводит числа Фибоначчи, а также суммирует их (для 15 чисел).Но когда я устанавливаю лимит в 4 000 000 номеров, он показывает вывод: -1833689714.Я изменил int на uint или large, но ответ все равно не правильный.Вот ссылка на проблему: https://projecteuler.net/problem=2https://projecteuler.net/problem=2

А вот мой код:

class Program
{
    static void Main(string[] args)
    {
        int a = 0;
        int b = 1;
        int fibonacciNumber = 0;
        int sum=0;
        bool whichNumber = false;

        for(int i = 0; i < 4000000; i++)
        {               
            fibonacciNumber = a + b; 
            if (fibonacciNumber % 2 == 0) sum += fibonacciNumber; //adding to sum of even-numbers

            if (whichNumber == false) //operations to change numbers 
            {
                a = fibonacciNumber;
                whichNumber = true;
            }

            else if (whichNumber == true)
            {
                b = fibonacciNumber;
                whichNumber = false;                    
            }
        }
        Console.WriteLine(sum);
        Console.ReadLine();
    }
}

Кто-то видит, где я допустил ошибку?

Ответы [ 3 ]

0 голосов
/ 11 декабря 2018

Попробуйте с long вместо int.Это займет еще несколько шагов, но снова будет предел.Если вам нужны действительно большие числа, вам нужен тип, который может их обрабатывать, например BigInteger .

0 голосов
/ 11 декабря 2018

Прочтите проблему еще раз.Вам не нужно суммировать первые четыре миллиона чисел Фибоначчи.Только цифры, которые меньше четырех миллионов.

Вам придется изменить свою реализацию, но вам не нужны большие типы данных, такие как BigInteger, int достаточно большой.

0 голосов
/ 11 декабря 2018

Похоже, что ваша sum переменная должна быть long.Значение больше, чем может хранить int.

...