Как найти сумму всех кратных 3 или 5 ниже 1000 в Python? - PullRequest
11 голосов
/ 09 мая 2011

Не уверен, стоит ли мне публиковать это на math.stackexchange, но оно включает больше программ, поэтому я разместил его здесь.

Вопрос кажется очень простым, но я сидел здесь по крайней мереодин час сейчас не разгадал.Я пробовал разные решения и читал математические формулы для него и т. Д., Но это не даст мне правильного ответа при его кодировании!Я сделал два разных решения для этого, и оба дают мне неправильный ответ.Первое решение дает мне 265334, а второе дает мне 232169. Ответ - 233168, поэтому второе решение ближе.

Я должен упомянуть, что это вопрос от Project Euler, первый если быть точным.

Вот мой код.Есть идеи что не так?

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

Ответы [ 18 ]

1 голос
/ 09 мая 2011
max = 1000  # notice this here
result = 0
for i in range(0,max):
if i%3 == 0 or i%5 == 0:
    result += i

print result

Это работает, но используйте 1000 для максимума, поэтому оно также включает 999.

0 голосов
/ 09 января 2018
count = 0

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

print(count)
0 голосов
/ 16 декабря 2017

это моё решение

sum = 0
for i in range (1,1000):
        if (i%3)==0 or (i%5)==0:
            sum = sum + i
print(sum)
0 голосов
/ 27 июля 2015

Вот, пожалуйста:

count = 1000
m = [3, 5, 3*5]
result = 0
Sum = 0
for j in m:
    result = 0
    for i in range(count):
        if i*j < 1000:
            result = result + i*j
        elif i == (count - 1):
            if j < 15:
                Sum = result + Sum
            elif j == 15:
                Sum = Sum - result
                print Sum
0 голосов
/ 05 мая 2015

Вы также можете использовать функциональные инструменты программирования ( фильтр ):

def f(x):
    return x % 3 == 0 or x % 5 == 0
    filter(f, range(1,1000)) 
print(x)

Или используйте два списка с вычитанием, кратным 15 (который появляется в обоих списках):

sum1 = []
for i in range(0,1000,3):
    sum1.append(i)
sum2 = []
for n in range(0,1000,5):
    sum2.append(n)
del sum2[::3] #delete every 3-rd element in list
print(sum((sum1)+(sum2)))

Мне нравится это решение, но я думаю, что оно нуждается в некоторых улучшениях ...

0 голосов
/ 06 декабря 2018

Я знаю, что это было 7 лет назад, но я хочу поделиться своим решением этой проблемы.

x= set()
for i in range(1,1001):
    if (i % 3) == 0:
        x.add(i)

for j in range(1,1001):
    if (j % 5) == 0:
        x.add(j)

print(sum(x))
0 голосов
/ 08 февраля 2019

Я должен был сделать это в диапазоне 1, 100

Вот как я это сделал.

For i in range(1,100):

If i ÷ 3 == 0 and i ÷ 5 == 0:

 print(i) 

Так что с 1000 вы просто меняете 100 на 1000

Я должен был найти кратные 3 и 5 в пределах 100, поэтому, если вам нужно 3 или 5, просто измените его наэто даст вам больше ответов тоже.Я только начинаю учиться, поправьте меня, если я ошибаюсь

0 голосов
/ 23 марта 2017

вот мое решение:

for n in range(100):
    if n % 5==0:
        if n % 3==0:
        print n, "Multiple of both 3 and 5"    #if the number is a multiple of 5, is it a multiple of 3? if yes it has has both.

    elif n % 5==0:
        print n, "Multiple of 5"

    elif n % 3==0:
        print n, "Multiple of 3"

    else:
        print n  "No multiples"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...