Неверный ответ в проекте ProjectEuler? - PullRequest
0 голосов
/ 14 июля 2020

Цель кода - найти сумму всех кратных 3 и 5 меньше 1000 (натуральные числа, поэтому начиная с 1).

Мой код:

sum_of_3 = 0
sum_of_5 = 0

for a in range (0, 1000, 3):
    sum_of_3 += a
print(sum_of_3)
Output: 166833

for b in range (0, 1000, 5)
    sum_of_5 += b
print (sum_of_5)
Output: 99500

total_sum = sum_of_3 + sum_of_5
print (total_sum)
Output: 266333

Мой вывод неверен. Правильный код и вывод:

nums = range (1, 1000)
sumofmultiples = 0
for i in nums:
    if i % 3 == 0 or i % 5 == 0:
        sumofmultiples = i + sumofmultiples
print (sumofmultiples)
Output: 233168

Почему я получаю другой ответ?

Ответы [ 2 ]

0 голосов
/ 18 июля 2020

Вы дважды рассчитываете какое-то значение! Например, 15, 30, 45, 60, 75, 90, 105 и так далее ...

В вашем первом l oop вы добавляете некоторое значение, например 15, 30, 45 Затем в следующем l oop вы снова добавляете их!

В правильном коде вы можете видеть, что есть оператор «Логическое ИЛИ», добавляющий 15, 30, 45 .... только один раз

I Надеюсь, вы получите это сейчас Спасибо.

0 голосов
/ 18 июля 2020

Выполняя сбор чисел в двух отдельных вычислениях, вы добавляете несколько чисел дважды.

Посмотрите на 15, будет добавлено 1 c, так как это умножение на 3 и снова, так как это кратно 5.

Если вы хотите сохранить свою студентку, вам следует проверить в своей второй на l oop, делится ли это число на 3.

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