Используем генераторное выражение и встроенный sum:
def sum_special(a: list[int]) -> int:
return sum(x for x in a if x % 3 == 0 and x % 5 != 0)
# Пример
import random
random.seed(42)
a = [random.randint(1, 100) for _ in range(100)]
print(sum_special(a))
Разбор:
x % 3 == 0 — делится на 3.
x % 5 != 0 — НЕ делится на 5.
and — оба условия.
Это эквивалентно классическому циклу:
total = 0
for x in a:
if x % 3 == 0 and x % 5 != 0:
total += x
Важный приём для ЕГЭ-17: в условиях часто требуют проверить деление на одно число и не-деление на другое — здесь типична ошибка перепутать or/and или знак сравнения.
Пример ручной проверки: 6 (3|6, 5∤6 → берём, +6); 15 (3|15, 5|15 → не берём); 30 (3|30, 5|30 → не берём).