created and first commit(3 solusions)
This commit is contained in:
48
solutions/0002.even_fibonacci/euler_2.py
Normal file
48
solutions/0002.even_fibonacci/euler_2.py
Normal file
@@ -0,0 +1,48 @@
|
||||
"""
|
||||
Even Fibonacci Numbers
|
||||
|
||||
Each new term in the Fibonacci sequence is generated by adding the previous two terms. By starting with 1 and 2, the first 10 terms will be:
|
||||
1, 2, 3, 5, 8, 13, 21, 34, 55, 89
|
||||
By considering the terms in the Fibonacci sequence whose values do not exceed four million, find the sum of the even-valued terms.
|
||||
"""
|
||||
|
||||
UP_NUM = 4000000
|
||||
|
||||
|
||||
def is_even(num: int) -> bool:
|
||||
"""Check if a number is even."""
|
||||
return num & 1 == 0
|
||||
|
||||
|
||||
"""
|
||||
下面这个方法实在太慢,计算400万项还会内存溢出。
|
||||
```python
|
||||
def fibonacci_sequence(n: int) -> list[int]:
|
||||
a, b = 1, 2
|
||||
res = [a, b]
|
||||
while b <= n:
|
||||
a, b = b, a + b
|
||||
res.append(b)
|
||||
return res
|
||||
|
||||
|
||||
def main():
|
||||
fib_seq = fibonacci_sequence(UP_NUM)
|
||||
even_sum = sum(num for num in fib_seq if is_even(num))
|
||||
print(even_sum)
|
||||
```
|
||||
"""
|
||||
|
||||
|
||||
def even_fibonacci(limit: int) -> int:
|
||||
a, b = 1, 2
|
||||
even_sum = 0
|
||||
while b <= limit:
|
||||
if is_even(b):
|
||||
even_sum += b
|
||||
a, b = b, a + b
|
||||
return even_sum
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
print(even_fibonacci(UP_NUM))
|
||||
Reference in New Issue
Block a user