Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/78: Рейтинг темы: голосов - 78, средняя оценка - 4.60
4 / 4 / 0
Регистрация: 29.01.2013
Сообщений: 91

Найдите сумму всех чётных элементов ряда Фибоначчи, которые не превышают четыре миллиона

03.02.2013, 18:41. Показов 16638. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Каждые следующий элемент ряда Фибоначчи получается при сложении двух предыдущих. Начиная с 1 и 2, первые 10 элементов будут:

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

Найдите сумму всех чётных элементов ряда Фибоначчи, которые не превышают четыре миллиона.
Я сделал програмку но она не работает, почему не понятно...
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
using System;
using System.Collections.Generic;
using System.Text;
 
namespace ConsoleApplication7
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] n = new int[10];
            int sum = 0;
            for (int i = 2; i < 4000000; i++)
            {
                n[0] = 1;
                n[1] = 2;
                n[i] = n[i-1] + n[i-2];
                if (n[i] % 2 == 0)
                {
                    sum += n[i];
                }
                Console.WriteLine(sum);
                if(n[i] > 4000000)
                {
                    break;
                }
            }
            Console.ReadLine();
        }
    }
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.02.2013, 18:41
Ответы с готовыми решениями:

Найдите сумму всех четных элементов ряда Фибоначчи, которые не превышают четыре миллиона
Добрый день! Компилятор ругается на 17-ю строчку кода. Пишет: &quot;Индекс находился вне границ массива.&quot; using System; using...

Вычислить сумму всех чисел Фибоначчи, которые не превышают N
Помогите решить задачу. Дано натуральное число N&gt;10. Вычислить сумму всех чисел Фибоначчи, которые не превышают N. Числа Фибоначчи...

Вычислить сумму всех чисел Фибоначчи, которые не превышают n
Вот попроси ли написать несколько простых программок, алгоритм понимаю, а синтаксис вспомнить не могу, институт давно закончил а с...

14
29 / 29 / 10
Регистрация: 28.10.2011
Сообщений: 183
03.02.2013, 19:05
У тебя возникает исключение IndexOutOfRangeException вот тут:
C#
1
n[i] = n[i - 1] + n[i - 2];
Почему? ну потому что у тебя цикл продолжается 4000000-2 итераций, и в кажой итерации ты обращаешься к n[i], а максимальный индекс в массиве это 10 а не 4 миллиона.
1
101 / 101 / 15
Регистрация: 23.05.2012
Сообщений: 260
03.02.2013, 19:32
или так

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
using System;
using System.Collections.Generic;
 
namespace SampleConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            int sum = 0;
 
            int numberPreview = 1;
            int numberNext = 2;
 
            int buf;
 
            while (numberNext < 4000000)
            {
                if (numberNext%2==0)
                {
                    sum += numberNext;
                }
                buf = numberNext;
                numberNext = numberNext + numberPreview;
                numberPreview = buf;
            }
 
            Console.WriteLine(sum);
        }
    }
}
1
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
03.02.2013, 21:15
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
using System;
using System.Collections.Generic;
using System.Linq;
 
namespace EvenFib
{
    class Program
    {
        private static void Main()
        {
            const int n = 40;
            var result = Fibonacci(n).Where((x, y) => y%2 == 0).Sum();
            Console.WriteLine(result);
            Console.ReadKey();
        }
 
        private static IEnumerable<long> Fibonacci(long maxvalue)
        {
            if (maxvalue <= 0)
                yield break;
            long fib_n_2 = 0, fib_n_1 = 1;
            while (fib_n_1 < maxvalue)
            {
                var temp = fib_n_1;
                yield return fib_n_1 += fib_n_2;
                fib_n_2 = temp;
            }
        }
    }
}
счет начинается с нуля
0
101 / 101 / 15
Регистрация: 23.05.2012
Сообщений: 260
03.02.2013, 21:55
не по теме:

человек в массиве умер а ты его linq'её добить хочешь)))
0
03.02.2013, 22:01

Не по теме:

DPW, эт да :(

1
101 / 101 / 15
Регистрация: 23.05.2012
Сообщений: 260
03.02.2013, 22:17
не по теме

Не по теме:

Это же не со скуки он озадачился, пади зачетик)))
Хотя ты прав

Вот я вижу эту картину студент и препод:
п - И что работает
С - по-любому
П- а это что
С - стыдно не знать тов преподаватель
П (подумал) - да стыдно спросить))))))

Автора темы прошу прощения за бестактность. Мы всегда готовы помочь)

1
713 / 680 / 126
Регистрация: 30.03.2012
Сообщений: 1,124
04.02.2013, 09:21
Psilon
вроде четные это те которые делятся на два без остатка
а не те номер которых в последовательности делится на два без остатка
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
04.02.2013, 11:37
Tessen, вопрос не в том, на что делится или не делится. Это как кратность корня многочлена
Кратный корень
многочлена
f (x) = a0xn + a1xn-1 +... + an,
число с такое, что f (x) делится без остатка на вторую или более высокую степень двучлена (х — с). При этом с называют корнем кратности, если f (x) делится на (х—с) k, но не делится на (х—c) k+1. Корень многочлена f (x) кратности k является также корнем производных этого многочлена до (k — 1)-го порядка включительно, т. е. многочленов f’(x), f "(x),..., f (k-1)(x). К. к. многочлена f (x) называется К. к. уравнения f (x) = 0.
Кратность это не только "на что делится без остатка", но и "сколько раз встретилось". Четырежды. Значит, кратность равна четырем. Если бы встретилось трижды - то кратность была бы равна трем. Это как в дифурах есть понятие кратности корня, взависимости от этого пишется многочлен (c1+c2x+c3x2+...+csxs-1)eλx где s - кратность корня, далеко не остаток от деления...
0
713 / 680 / 126
Регистрация: 30.03.2012
Сообщений: 1,124
04.02.2013, 13:07
поясню:
ваш код выше (через linq)
возвращает сумму следующих чисел: 1, 3, 8, 21, 55
условие задачи:
Найдите сумму всех чётных элементов ряда Фибоначчи, которые не превышают четыре миллиона.
мой вопрос заключался в следующем: числа 1, 3, 21, 55 - четные? потому что ваш код считает не сумму четных чисел а сумму чисел с четными номерами
кстати из-за условия цикла while в вашем коде он возвращает на 1 число больше чем требуется по условию (так, для n=4000000 последнее число "не превышающее n будет 5702887)
1
4 / 4 / 0
Регистрация: 29.01.2013
Сообщений: 91
04.02.2013, 16:43  [ТС]
А почему нельзя больше 10?

P.S.Задачку взял отсюда - http://euler.jakumo.org/problems.html

Добавлено через 6 минут
Цитата Сообщение от DPW Посмотреть сообщение
Это же не со скуки он озадачился, пади зачетик)))
Со скуки
0
3 / 3 / 0
Регистрация: 10.12.2015
Сообщений: 17
06.02.2016, 10:45
Не понимаю, зачем тебе понадобились массивы.
Вот моё решение:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
ulong q = 1; //первый элемент
ulong i = 1; //второй элемент
ulong w = 0; //понадобится для того, чтобы получился правильный ряд
ulong rezult = 0; //записываем результат
 
for (int count = 1; count <= 4000000; count++)
{
     w = q + i; // 1 + 1 = 2
     q = i; //записываем 1
     i = w; //записываем 2
 
     if (w % 2 == 0) //проверяем, чётное ли число
     {
         rezult += i;
     }
}
Console.WriteLine(rezult); // выводим результат
//У меня получилось 6280710680130704614
Console.ReadKey();
0
0 / 0 / 0
Регистрация: 06.02.2016
Сообщений: 6
06.02.2016, 11:27
чет ты намудрил. сумма будет большой, поэтому int не подойдет.
C#
1
2
3
4
5
6
7
8
9
long sum = 0;
for (long i = 0; i <= 4000000; i++){
    if(i%2==0){
        sum = sum + i;
        
    }
    else {continue;}
}
Console.WriteLine(sum);
0
3 / 2 / 1
Регистрация: 02.10.2019
Сообщений: 13
13.01.2020, 11:02
Вот полностью рабочее и очень простое решение без танцев с бубном и подпорок.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
using System;
 
namespace ConsoleApp2
{
    class Program
    {
        static void Main(string[] args)
        
        {
            Console.Title = "Решение задачи номер 2 Эйлера.";
 
            int x=0, y=1, result=0,summaplus=0;
 
            while (result == 0 || result+y <= 4000000)
            {
                
                
                    result = x + y;
                    x = result;
                    y = result - y;
                    summaplus = result + summaplus;
                    Console.WriteLine(result);
                
                
 
            }
 
            Console.WriteLine("Программа выполнена! Сумма: "+summaplus);
 
                Console.ReadKey();
            
        }
    }
}
Добавлено через 8 минут
И вариант с четными числами.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
using System;
 
namespace ConsoleApp2
{
    class Program
    {
        static void Main(string[] args)
        
        {
            Console.Title = "Решение задачи номер 2 Эйлера.";
 
            int x=0, y=1, result=0,summaplus=0;
 
            while (result == 0 || result+y <= 4000000)
            {
                
                
                    result = x + y;
                    x = result;
                    y = result - y;
                if (result % 2 == 0)
                {
                    summaplus = result + summaplus;
                    Console.WriteLine(result);
                }
                
                
 
            }
 
            Console.WriteLine("Программа выполнена! Сумма: "+summaplus);
 
                Console.ReadKey();
 
            
        }
    }
}
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
13.01.2020, 12:05
Как вариант, хоть и тема 7-летней давности:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
using System;
using System.Collections.Generic;
using System.Linq;
 
class Program
{
    static void Main()
    {
        var evenFibs = from value in FibonacciSequence()
                       where value % 2 == 0 && value <= 4_000_000
                       select value;
 
        Console.WriteLine(evenFibs.Sum());
    }
 
    static IEnumerable<long> FibonacciSequence()
    {
        long curr = 1, prev = 1;
        while (prev > 0)
        {
            yield return prev;
            var next = prev + curr;
            prev = curr; curr = next;
        }
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.01.2020, 12:05
Помогаю со студенческими работами здесь

Вычислить сумму всех чисел Фибоначчи, которые не превышают N
Исправте плиз)) Дано натуральное число N&gt;10. Вычислить сумму всех чисел Фибоначчи, которые не превышают N. Числа Фибоначчи образуются...

Вычислить сумму всех чисел Фибоначчи, которые превышают 100
Чмсла Фибоначчи определяются формулами Fo=F1=1; Fn=F(n-1)-F(n-2) при n=2,3,... Вычислить сумму всех чисел Фибоначчи, которые превышают 100....

Найдите количество элементов матрицы, которые не превышают сумму элементов побочной диагонали
Найдите количество элементов матрицы, которые не превышает сумму элементов побочной диагонали.(Pascal) Помогите пожалуйста.

Найти сумму четных чисел последовательности Фибоначчи до миллиона
Уважаемые форумчане прошу помочь, так как в Хаскеле я ни бум бум. Заранее спасибо. 1) Сумму всех четных значений последовательности...

Посчитать сумму четных элементов массива F, которые превышают заданное число А
Посчитать сумму парных элементов массива F, которые превышают заданное число А А=8, количество элементов N = 12 , элементы от 2 до 25 ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru