Задача 1
Если выписать все натуральные числа меньше 10, кратные 3 или 5, то получим 3, 5, 6 и 9. Сумма этих чисел равна 23.
Найдите сумму всех чисел меньше 1000, кратных 3 или 5.
Код:
# Задача 1
non_x = 0
non_y = 0
pol = int(input('Диапазон = '))
i = 0
v = 0
# ///3
for i in range(pol):
i + +1
if (i / 3) - (i // 3) == 0:
non_x = non_x + i
# ///5
for v in range(pol):
v + +1
if (v / 5) - (v // 5) == 0:
non_y = non_y + v
non = int(non_x) + int(non_y)
print(non)

Если делать так, как предлагает Elepsis Eclipse, то формула будет немного сложнее:
print(3 * (1 + 1000 // 3) * (1000 // 3) // 2 + 5 * (1 + 1000 // 5) * (1000 // 5) // 2 - 15 * (1 + 1000 // 15) * (1000 // 15) // 2)
из-за того, что простое суммирование дважды учитывает числа, кратные НОК (3, 5) = 15.
В твоём коде та же самая ошибка: ты не учитываешь, что числа, одновременно кратные и 3, и 5, суммируются дважды.
Самое короткое решение задачи получается при тупом переборе значений:
print(sum([i for i in range(1, 1001) if (i % 3) * (i % 5) == 0]))
P.S. Для проверки делимости писать (i / 3) - (i // 3) == 0 бессмысленно. Выражение i % 3 == 0 короче, проще, понятнее и быстрее выполняется.
3 + 6 + 9 + 12 + . . . 999 = 3 * (1 + 2 + 3 + .333) = 3 * ( 1 + 333 ) * 333 / 2
5 + 10 + 15 + . . . 1000 = 5 * (1 + 2 + 3 + .200) = 5 * ( 1 + 200 ) * 200 / 2
Поэтому это решается так:
print( ( 3 * ( 1 + 333 ) * 333 + 5 * ( 1 + 200 ) * 200 ) / 2 )
в одну строчку)) Эйлер бы одобрил... вместо перебора в лоб)
Не жалей компуктер! Он для того и нужен, чтобы выполнять много вычислений)
print(sum(x for x in range(1, 1000) if not x % 3 and not x % 5))