Python:Project Euler#1

时间:2014-11-15 19:50:51

标签: python

我已经尝试查找已经在StackOverflow上为项目Euler问题1提出的一些问题,但对我没什么帮助。这是我的代码,它运行,但它不正确。不确定什么是错的?

def sumOfMultiples(number):

    sum = 0

    for i in range(1,number):

        if i % 3 == 0 or i % 5 == 0:

            sum += 1

    return sum

print (sumOfMultiples(15))

5 个答案:

答案 0 :(得分:3)

您根本没有使用i。当数字符合条件(可被3或5整除)时,您想要添加它,而不是1。

        sum += 1

应该是

        sum += i

答案 1 :(得分:3)

question要求"低于1000"的所有3或5的倍数之和。您将总和加1,而不是将3或5的倍数加到总和中。

因此sum += 1应为sum += i

答案 2 :(得分:2)

import time
#Recording start time of the program
start=time.time()
#A variable to store the sum 
result=0

#calculating the sum for all the numbers below 1000
for i in range(1,1000):
#Checking the the condition 
    if i%3==0 or i%5==0:
     result=result+i
print("Sum of all numbers that are multiples of 3 or 5 below 1000 is",result)
print("Execution time of program is",time.time()-start)

答案 3 :(得分:0)

def sumOfMultiples(number):
    sum = 0
    for i in range(1,number):
        if i % 3 == 0 or i % 5 == 0:
            sum += i
    return sum

print (sumOfMultiples(15))

代替sum + = 1写入总和+ = i。

答案 4 :(得分:0)

这是一个让你思考的单线:

print sum([x for x in xrange(1,1000) if x%3==0 or x%5==0])

或者您也可以这样做:

print sum([[0,x][x%3==0 or x%5==0] for x in xrange(1,10**3)])