通过考虑斐波那契数列中值不超过四百万的项,找到偶数项的总和
By considering the terms in the Fibonacci sequence whose values do not exceed four million, find the sum of the even-valued terms
寻求有关此项目的一些帮助 欧拉问题:通过考虑斐波那契数列中值不超过四百万的项,找到偶数项的总和。
我相信还有其他更简单的方法可以做到这一点,但我才刚刚开始!我已经设法让代码输出斐波那契数列的偶数项之和,但我不知道如何将输出限制设置为四百万(我刚刚设置了范围 1 - 10 用于测试)。有没有办法用我现在写的代码来做这件事,而不是重新开始?
def fibonacci(n):
if n==0:
return 0
elif n==1 or n==2:
return 1
elif n>2:
return (fibonacci(n-1)+fibonacci(n-2))
fib_list=[fibonacci(n) for n in range (1, 10) if fibonacci(n)%2==0]
fib_even=sum(fib_list)
print(fib_list)
print(fib_even)
"while" 循环可能比列表理解更适合这个问题。使用带有条件 "break" 语句的 "while True" 循环甚至可能是最简单的。
这是我的解决方案:
def fibonacci():
sequence = [1, 2]
total = 0
while sequence[-1] < 4000000:
if sequence[-1] % 2 == 0:
total += sequence[-1]
sequence.append(sequence[-1] + sequence[-2])
print(total)
对列表中最后一个元素的检查确保它不会 运行 超过 400 万。这也是sgfw他们的回应的意思。我不确定您将如何实现列表理解 - 这不是我解决此问题的首选。
您可以使用内置函数 sum
和 filter
:
def fib(limit):
a, b = 0, 1
while a < limit:
yield a
a, b = b, a + b
sum(filter(lambda x: x%2==0, fib(4_000_000)))
输出:
4613732
fib
函数将生成所有斐波那契数,而 filter
函数将过滤掉那些不偶数的数字,最后,sum
内置函数将将所有偶数相加
寻求有关此项目的一些帮助 欧拉问题:通过考虑斐波那契数列中值不超过四百万的项,找到偶数项的总和。
我相信还有其他更简单的方法可以做到这一点,但我才刚刚开始!我已经设法让代码输出斐波那契数列的偶数项之和,但我不知道如何将输出限制设置为四百万(我刚刚设置了范围 1 - 10 用于测试)。有没有办法用我现在写的代码来做这件事,而不是重新开始?
def fibonacci(n):
if n==0:
return 0
elif n==1 or n==2:
return 1
elif n>2:
return (fibonacci(n-1)+fibonacci(n-2))
fib_list=[fibonacci(n) for n in range (1, 10) if fibonacci(n)%2==0]
fib_even=sum(fib_list)
print(fib_list)
print(fib_even)
"while" 循环可能比列表理解更适合这个问题。使用带有条件 "break" 语句的 "while True" 循环甚至可能是最简单的。
这是我的解决方案:
def fibonacci():
sequence = [1, 2]
total = 0
while sequence[-1] < 4000000:
if sequence[-1] % 2 == 0:
total += sequence[-1]
sequence.append(sequence[-1] + sequence[-2])
print(total)
对列表中最后一个元素的检查确保它不会 运行 超过 400 万。这也是sgfw他们的回应的意思。我不确定您将如何实现列表理解 - 这不是我解决此问题的首选。
您可以使用内置函数 sum
和 filter
:
def fib(limit):
a, b = 0, 1
while a < limit:
yield a
a, b = b, a + b
sum(filter(lambda x: x%2==0, fib(4_000_000)))
输出:
4613732
fib
函数将生成所有斐波那契数,而 filter
函数将过滤掉那些不偶数的数字,最后,sum
内置函数将将所有偶数相加