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 <[EMAIL PROTECTED]>
To: tutor@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.
> >
> >
> >
> > Thanks in advance,
> >
> > 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
> 
> 
> 
_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to