Проект Эйлера - Задача 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.
Я так решил.

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

  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))

    ОтветитьУдалить
  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))

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