Четные числа Фибоначчи
Каждый следующий элемент ряда Фибоначчи получается при сложении двух предыдущих. Начиная с 1 и 2, первые 11 элементов будут:
1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
Найдите сумму всех четных элементов ряда Фибоначчи, которые не превышают четыре миллиона.
Моё решение (Python) под катом:
В начале было интересно просто повторить ряд Фибоначчи из примера:
a = 1
b = 0
c = 0
i = 0
while i <= 10:
c = a + b
print(c)
i += 1
a = b
b = c
- Задаём переменные a, b, c и i с которыми и будем работать.
- Запускаем луп 10 раз и получаем ряд Фибоначчи из примера.
Значит надо добавить условие по которому мы будем выбирать только чётные элементы и складывать их. Главное чтобы сам элемент не превышал 4М.
a = 1
b = 0
c = 0
sum = 0
while c <= 4000000:
c = a + b
if c % 2 == 0:
sum += c
a = b
b = c
print(sum)
- Переменную i меняем на sum. В ней и будем всё суммировать.
- А в переменной с мы будем хранить последний элемент ряда. Таким образом мы будет отслеживать только сами элементы ряда а не все числа до 4М.
Питон выдал ответ 4613732.
Я так решил.
nums = [1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
ОтветитьУдалитьhigh = nums[-1]
while high < 4000000:
preHigh = nums[-2]
high += preHigh
nums.append(high)
print(nums)
suma = []
Удалитьfor i in nums:
if (i % 2 == 0):
suma.append(i)
print(sum(suma))
Можно было сделать b += a
ОтветитьУдалитьa = b - a
Тогда не нужно вводить переменную c
a = 1
ОтветитьУдалитьb = 2
c = 3
d = 0
while a < 4000000 and b < 4000000 and c < 4000000:
a = c + b
b = a + c
c = a + b
if a%2==0:
d = d + a
if b%2==0:
d = d + b
if c%2==0:
d = d +c
print(d)
x1 = 0
ОтветитьУдалитьx2 = 1
sum = 0
while x2 < 4000000:
x1, x2 = x2, x1 + x2
if x2 % 2 == 0:
sum += x2
print("Ответ: ", sum)
arr = [1, 2]
ОтветитьУдалитьfor i in arr:
if (i + arr[-1]) > 4000000:
break
else:
arr.append(i + arr[-1])
print(sum([i for i in arr if i %2 == 0]))
Этот комментарий был удален автором.
ОтветитьУдалитьresult = 0
ОтветитьУдалитьfib_1, fib_2 = 1, 1
while fib_2 <= 4000000:
fib_2 += fib_1
fib_1 = fib_2 - fib_1
if fib_2 % 2 == 0:
result += fib_2
print(result)
# Мой Ответ
ОтветитьУдалитьsumf = 0
f1 = 1
f2 = 1
for n in range(1,4000000):
if n == f1 + f2 or f2 == 1:
f1 = f2
f2 = n
if f2 % 2 == 0:
sumf += n
print(sumf)
# Мой Ответ
ОтветитьУдалитьa = 1
b = 2
c = 3
v = []
v.append(a)
v.append(b)
while a<4000000 or b < 4000000 or c < 4000000:
c = a+b
v.append(c)
a = c+b
v.append(a)
b = a+c
v.append(b)
z = []
for i in v:
if i%2 ==0:
z.append(i)
print(sum(z))
x=[1, 2]
ОтветитьУдалитьwhile x [-1] < 4000000:
x.append (x [-1] + x [-2])
summ = 0
for i in x:
if i % 2 == 0 and i < 4000000:
summ += i
print (summ)