Учу
язык программирования, нашел такую задачу из проекта Эйлера:
Найдите сумму всех чётных элементов ряда Фибоначчи, которые не превышают четыре миллиона.
Последовательность Фибоначи это последовательность вида 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ... в которой каждое последующее число равно сумме двух предыдущих чисел.
В интернете нашел такое решение данной задачи, но не могу понять, что автор здесь намудрил?!
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
float i; //Переменная для цикла
int fibbonachi[10000], tmp=0, summa=0;
for(i = 1; i <= 40;i++)
if (i == 1 || i == 2)
{
fibbonachi[tmp]=i;
tmp++;
}
else
{
fibbonachi[tmp] = fibbonachi[tmp-2]+fibbonachi[tmp-1];
tmp++;
//printf("%.0f\n", i);
}
for (tmp=0; tmp<=40; tmp++)
if (fibbonachi[tmp]<=4000000)
{
printf("%d\n", fibbonachi[tmp]); //Печатаем все числа фиббоначи, которые не превышают 4 миллиона
if (fibbonachi[tmp] % 2 == 0)
summa += fibbonachi[tmp];
}
printf("Сумма всех четных элементов ряда Фиббоначчи, которые не превышают четыре миллиона: %d\n", summa);
system("PAUSE");
return 0;
}Получается такой вывод:
1
2
3
5
8
13
21
34
55
89
144
233
377
610
987
1597
2584
4181
6765
10946
17711
28657
46368
75025
121393
196418
317811
514229
832040
1346269
2178309
3524578
0
Сумма всех четных элементов ряда Фиббоначчи, которые не превышают четыре миллиона: 4613732
Например, почему у него два цикла фор до 40, что они значат и почему до 40, а не до 20 или скажем до 50?
Почему числа выводятся с двойки, куда делись ноль и одна единица в начале?
Почему после последнего числа перед конечной суммой 4613732 снова выводится ноль?
Для чего в конце стоит это system("PAUSE");
Кто-нибудь может прояснить ситуацию?
