# [Tutor] Memory error - how to manage large data sets?

Kepala Pening kepalapening at gmail.com
Thu Jul 31 04:19:56 CEST 2008

```def sumEvenFibonacci( limit ):
a, b = 1, 1  # don't waste with a = 0
sum = 0
while b < limit:
if b%2 == 0: sum += b
a, b = b, a + b
return sum

print sumEvenFibonacci( 2000000 )

----- Original Message -----
From: Chris Fuller <cfuller084 at thinkingplanet.net>
To: tutor at python.org
Date: Mon, 28 Jul 2008 12:27:58 -0500
Subject: Re: [Tutor] Memory error - how to manage large data sets?

> On Monday 28 July 2008 10:56, Karthik wrote:
> > Hi,
> >
> >
> >
> > I am new to Python programming, I was trying to work out a few problems in
> > order to grasp the knowledge gained after going through the basic chapters
> > on Python programming. I got stuck with a memory error.
> >
> >
> >
> > Following is what I did,
> >
> >
> >
> > 1.     I need to find the sum of all numbers at even positions in the
> > Fibonacci series upto 2 million.
> >
> > 2.     I have used lists to achieve this.
> >
> > 3.     My program works good with smaller ranges. Say till 10,000 or even
> > 100,000. However when I compute the sum for bigger ranges it gives me the
> > memory error.
> >
> > 4.     Also could someone tell me how to get the result in the form of an
> > exponent. For instance, I would prefer 10^5 rather  100000.
> >
> >
> >
> >
> > Karthik
>
> It sounds like you are storing all the fibonacci numbers as you generate
them.
> Why?  You only need the previous two to find the next in the sequence.  The
> sum is a single number that you can add every other element in the sequence
> to.  You only need to store three numbers in memory.  Storing millions is
> wasteful, and doesn't scale very well.
>
> To find an exponent, use the "**" operator.  For instance, 2**3 is 8, and
3**2
> is 9.
>
> Cheers
>
>
>
```