Python - делимость и количество

Хорошо, редактируем для ясности, извините за путаницу.

Мне нужно посчитать количество вхождений числа (скажем, 2) от 1 до n (введенное пользователем положительное число). Это включает каждый раз, когда данное число может входить в каждое число от 1 до n.

Таким образом, каждый экземпляр 2 в каждом числе до п. таким образом, 10 будет 5 из 10, плюс 4 из 9, 4 из 8, 3 из 7, 3 из 6, 2 из 5, 2 из 4, 1 из 3 и 1 из 2. Остальные значения не имеют значения, я просто нужно посчитать 2с.

поэтому пользователь, введя 10, должен напечатать 25, если моя математика верна.

Я новичок и совершенно невежественен.

На данный момент, я в основном прошу пользователя ввести число.

n = int (input ("Введите положительное число от 1 до 1000"))

Я успешно получил свой код для деления на девять, но на самом деле это не то, что я пытаюсь сделать. Я думаю, что мне нужно преобразовать все между 1 и n в строку? Будет ли это использовать диапазон, как 1:n? Это вообще возможно?

Тогда я мог посчитать, сколько из определенного числа?

Спасибо!

1 ответ

Решение

Вы имеете в виду что-то подобное?

def count(n):
    occurrences = 0
    for i in range(n, 0, -1):  # i -> n, n-1, n-2, ... 3, 2, 1
        occurrences += i//2    # add whole number of 2's in this value of i
    return occurrences

print(count(10))  # 25
print(count(9))   # 20

Если то, что это делает, правильно, его можно оптимизировать и сократить просто:

def count(n):
    return sum(i//2 for i in range(n, 0, -1))

Который применяет встроенный sum() функция к generator expression,

range(n, 0, -1) итератор, который производит все числа из n в 1 задом наперед - что я и использовал, так как ты описал то, что хотел. Поскольку делать это в таком порядке на самом деле не имеет значения, вероятно, было бы лучше (проще) просто использовать range(1, n+1) который производит последовательность в порядке возрастания (1, 2, 3, ... n-2, n-1, n).

Другие вопросы по тегам