Comment trouver la somme de tous les multiples de 3 ou de 5 à moins de 1000 en Python?

Pas sûr si je devrais ai posté ça sur les mathématiques.stackexchange au lieu de cela, mais il inclut plus de la programmation donc je l'ai posté ici.

La question semble vraiment simple, mais je suis assis ici pendant au moins une heure maintenant est de ne pas essayer de le comprendre. J'ai essayé différentes solutions, et de lire les formules mathématiques pour elle, etc, mais il ne me donne le droit de réponse lors du codage! J'ai fait deux solutions différentes pour elle, qui à la fois me donne la mauvaise réponse. La première solution me donne 265334 tandis que le second me donne 232169. La réponse est 233168, de sorte que la deuxième solution est plus proche.

Je dois mentionner que c'est une question de Projet Euler, le premier pour être précis.

Voici mon code. Toutes les idées ce qui est faux?

nums = [3, 5]
max = 999

result = 0
for num in nums:
    for i in range(1,max):
        if num*i < max:
            result += num*i
print result


result = 0
for i in range(0,max):
    if i%3 == 0 or i%5 == 0:
        result += i

print result
L'un de vos réponses, c'est à droite.
Certainement n'appartient pas à les mathématiques pile d'échange c'est une variation sur un (un peu connu) programmation de la question de l'entrevue appelé fizz buzz.
J'ai simplement répondu à une question similaire. Le code est en Java, mais il devrait être facile à traduire en Python.
votre solution est O(n), cela peut être facilement résolu en O(1) fois.
sum [3,6..999] + sum [5,10..999] - sum [15,30..999]

OriginalL'auteur qwerty | 2011-05-08