Проект Эйлера - Задача 1


Числа, кратные 3 или 5

Если выписать все натуральные числа меньше 10, кратные 3 или 5, то получим 3, 5, 6 и 9. Сумма этих чисел равна 23.

Найдите сумму всех чисел меньше 1000, кратных 3 или 5.

Моё решение (Python) под катом:


i = 1 a = 0 while i < 1000: if i % 3 == 0 or i % 5 == 0: a = a + i i += 1 print(a)

Что тут получилось:
  1. Задаём переменной i значение 1 и переменной а значение 0.
  2. Запускаем простенький луп который будет бежать 999 раз. Нас так попросили в условии "меньше 1000".
  3. А в этом лупе у нас условие. Если число которое в переменной i (оно же и номер лупа по счету от 1 до 1000) делится на 3 или на 5 без остатка, его надо прибавить к тому что уже есть в переменной а.
  4. Таким образом мы проходим все числа от 1 до 1000 и суммируем все числа которые делятся на 3 и 5.
  5. Питон выдал 233168.
Я так решил.

26 комментариев:

  1. Этот комментарий был удален автором.

    ОтветитьУдалить
  2. В коде ошибка, которая делает цикл бесконечным. 6 строку нужно вынести на уровень с if, что бы убрать бесконечный цикл. 7 строку на уровень c while, что бы на экран не выводились ненужные числа.

    ОтветитьУдалить
  3. Можно и через For:
    sum = 0
    for x in range(1000):
    if x != 0:
    if x % 3 == 0 or x % 5 == 0:
    sum = sum + x
    print(sum)

    ОтветитьУдалить
    Ответы
    1. Можно обойтись и без дополнительной проверки x != 0, если указать в range 1, 1000

      Удалить
  4. z = 0
    for i in range(1, 1000, 1):
    x = i % 3
    if x == 0:
    z = z + i
    else:
    x = i % 5
    if x == 0:
    z = z + i
    continue
    else:
    continue
    print(z)

    ОтветитьУдалить
  5. a = list (range(0, 1000, 3))
    b = list (range(0, 1000, 5))
    print (sum(a) + sum(b))

    ОтветитьУдалить
    Ответы
    1. Ошибка так как в range(0, 1000) выдает от 1 до 999,а 1000 кратно числу 5

      Удалить
    2. a=list(range(0, 1000, 3))
      b=list(range(0, 1000, 5))
      c=list(range(0, 1000, 15))
      print(sum(a)+sum(b)-sum(c))

      Удалить
    3. Да, нет ошибки в условиях задачи число меньше 1000

      Удалить
  6. a = list (range(0, 1000, 3))
    b = list (range(0, 1000, 5))
    for i in b:
    if i in a:
    b.remove(i)
    print (sum(a + b))

    ОтветитьУдалить
  7. print(sum([i for i in range(1000) if i % 3 == 0 and i % 5 == 0]))

    ОтветитьУдалить
  8. summa = 0
    for number in range(1, 1000):
    if number % 3 == 0 or number % 5 == 0:
    summa = summa + number
    print(summa)
    ответ 233168

    ОтветитьУдалить
  9. n = 0
    a = []
    b = []
    while n < 1000:
    if n % 3 == 0 or n % 5 == 0:
    a.append(n)
    else:
    b.append(n)
    n += 1
    print(a)
    print(sum(a))

    ОтветитьУдалить
  10. print(sum(set(list(range(0, 1000, 3)) + list(range(0, 1000, 5)))))

    ОтветитьУдалить
  11. print(sum([a for a in range(1000) if a % 3 == 0 or a % 5 == 0]))

    ОтветитьУдалить
  12. total = 0
    for i in range(1000):
    if not i%3 or not i%5:
    total += i
    print(total)

    ОтветитьУдалить
  13. Этот комментарий был удален автором.

    ОтветитьУдалить
  14. result = 0

    for i in range(1000):
    if (i % 3 == 0) or (i % 5 == 0):
    result += i
    else:
    print(result)

    ОтветитьУдалить
  15. s=0
    for i in range(1,1000):
    if i%3==0 or i%5==0:
    s= s+i
    print (s)

    ОтветитьУдалить
  16. a = list(range(1, 1000))
    b = 0
    for x in a:
    if (x % 3 == 0) or (x % 5 == 0):
    b += x
    print(b)

    ОтветитьУдалить
  17. s =[]
    for a in range(0, 1000):
    if a % 3==0 or a % 5 ==0:
    s.append(a)
    print(sum(s))

    ОтветитьУдалить
  18. a=0
    for i in range(1000):
    if((i % 3 == 0) or (i % 5 == 0)):
    a+=i
    print(a)

    почему то не проходит проверку на проекте Эйлера , но я считаю это самое удобное решение

    ОтветитьУдалить