Рубрики
Без рубрики

Модульная арифметическая и проектная проблема.

Для #Projecteuler100 я смотрю на первую проблему, потому что вы должны с чего -то начать. Tagged с проектом, Python, алгоритмами, начинающими.

В январе 2020 года, который был примерно три года назад по моим подсчетам, я случайно увидел этот пост:

Я смутно думал, что это звучит как крутая идея, и что я должен сделать это и написать об этом в блогах. Я отбил в Проект Euler Раньше, и в качестве письма раскрылось около половины первых 100, хотя некоторые с помощью методов, которые мне было бы смущены, чтобы рекламировать в сообщении в блоге программирования.

Многое произошло с января, но я собираюсь попробовать 100 дней ведения блога Линдси в сочетании с этой задачей:

Я хочу сказать вам прямо сейчас, что мы абсолютно не переживаем первые 100 проблем проекта Euler в ближайшие 100 дней, но я хочу начать немного с каждым днем и, надеюсь, в конечном итоге закончить их. Я не планирую публиковать каждый день, а придерживаться меня.

Теперь я также хочу сказать, в виде предисловия: это головоломки, которые забавно попробовать себя! Здесь будут спойлеры, читайте на вашем собственном риске!

Кроме того, Project Euler довольно математика- y. Если это не твоя вещь, это круто! Есть много программ, которые не попадают в математику. И я постараюсь привлечь соответствующие концепции программирования и информатики, когда смогу, потому что я не все о математике Либо TBH

Хорошо, без лишних слов, Проблема один Анкет

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

Это звучит похоже на классический Fizzbuzz Interview Вопрос и может быть решено аналогичным образом.

Ключевая идея здесь заключается в том, что нам нужен способ быстро проверить, делится ли число на другой номер. Мы могли бы сделать что-то вроде разделения чисел и проверки фигур после десятичного десятичного, но это кажется тяжелым и может быть раздражающим, чтобы гарантировать, что цифры рассматриваются как десятичные знаки, а не как автоматически окружающие целые числа.

Магия здесь оператор модуля . Возможно, это не было рассмотрено в ваших классах математики, если они не освещают дискретную математику или информатику, но идея довольно проста, она возвращает Остаток, когда первое число разделено на второе Анкет

Вот несколько примеров:

10 % 5 == 0
23 % 5 == 3
4 % 5 == 4

Если это все еще неясно, попробуйте с еще несколькими значениями в вашей реплике или на Repl.it Анкет

Модульная арифметика появляется во многих приложениях IRL, как минуты за часом.

Таким образом, мы видим, что числа, которые делятся на второе число, возвращают ноль с оператором модуля.

Для цифр, которые делятся на пять:

i % 5 == 0

И для чисел, которые делятся на три:

i % 3 == 0

Теперь, когда у нас есть простой способ идентифицировать эти цифры, мы можем перевернуть и добавить каждого из них к общему уровню. Я написал функцию, которая суммировала бы все 3 и 5 кратных в рамках n , но есть много альтернативных способов приблизиться к нему.

Вот мой завершенный код, также доступный на GitHub Анкет

def sumOf3or5MultiplesUnder(n):
    total = 0
    for i in range (0, n):
        if i % 3 == 0 or i % 5 == 0:
            total = total + i
    return total

print(sumOf3or5MultiplesUnder(1000))

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

Оригинал: “https://dev.to/valeriecodes/modular-arithmetic-project-euler-problem-one-4378”