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