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
Post a Comment