python - Multiples of 3 and 5 | Appending multiples to lists -


i'v been studying python less month , working on project euler.

so ironically i'm stuck on first question. check out app road below , love input have messed up. or using wrong logic.

if list natural numbers below 10 multiples of 3 or 5, 3, 5, 6 , 9. sum of these multiples 23.

find sum of multiples of 3 or 5 below 1000.

my logic/code flow

sum = multiple_three + multiple_five multiple_three = [] multiple_five = []  def multiple_three(bignumber):     number in range(bignumber):         if number % 3 == 0:             multiple_three.append(number)  def multiple_five(bignumber):     number in range(bignumber):         if number % 5 == 0:             multiple_five.append(number)  bignumber = 1000 multiple_five(bignumber) multiple_three(bignumber)  print multiple_three print multiple_five 

let's see.

we can start using fact range has step argument. range(0,10,3) 0,3,6,9.

so, starters, have

sum(range(0,1000,3)) + sum(range(0,1000,5)) 

but wait! numbers divisible 15 divisible both 5 , 3! we're counting them twice! uh, uh, let's subtract them out

sum(range(0,1000,3)) + sum(range(0,1000,5)) - sum(range(0,1000,15)) 

hum. think we're still missing here. there easier way add arithmetic progression? have sworn there was...

something (a_0 + a_n)*n/2, n number of terms, maybe...

def sum_of_arithmetic_progression(start,stop,step):     n = (stop-start)//step #floor division :p     end = start + step*n     return (start + end)*n/2.0  sum_of_arithmetic_progression(0,1000,3)+sum_of_arithmetic_progression(0,1000,5)-sum_of_arithmetic_progression(0,1000,15) 

Comments