Страницы

Поиск по вопросам

четверг, 13 февраля 2020 г.

Получить все числа, не превышающие заданного числа N, которые делятся без остатка на все свои цифрыы

#python #python_3x #for


Накопал в интернете эту ссылку:
https://clck.ru/JccbR
Здесь написано на C++, попытался перевести на Питон, в соразмерности со своими знаниями,
получил:

def test(i):
    k = i
    while(k):
        d = k % 10
        k /= 10
        if (d and i % d):
            return False
    return True
n = int(input())
for i in range(1, n + 1):
    if (test(i)):
        print(i)


Программа ничего не выводит, подскажите пожалуйста где я не прав?
    


Ответы

Ответ 1



В Python 3.x: k /= 10 Вернет число с плавающей точкой. Воспользуйтесь целочисленным делением: k //= 10 def test(i): k = i while(k): d = k % 10 k //= 10 if (d == 0 or i % d): return False return True проверка: In [174]: for i in range(1, int(input()) + 1): ...: if (test(i)): ...: print(i) ...: 42 1 2 3 4 5 6 7 8 9 11 12 15 22 24 33 36

Ответ 2



Проблема решена, как и сказал @MaxU нужно было заменить k/=10 на k//=10, а также сделать проверку на круглое число: def test(i): k = i while(k): d = k % 10 k //= 10 if (d and i % d): return False return True n = int(input()) for i in range(1, n + 1): if (test(i) and i % 10 != 0): print(i) Большое спасибо)

Комментариев нет:

Отправить комментарий