Дано а - целое число, вывести все простые цифры числа (без строк)

a=int(input('a:'))
k=int
for i in range(2,a+1):
        for j in range (2,i):
            if i%j==0:
                break
            else:
                k=j
print(k)

Хз что не правильно делаю


Ответы (2 шт):

Автор решения: Zhihar

Хз что не правильно делаю

подозреваю, что всё кроме первой строчки кода

А что ваш код вообще делать должен был бы? Например, зачем вообще k = int - что это значит? И не смущает, что надо вывести "все простые числа", а у вас только 1 вывод (одного числа) - ведь k у вас именно число, а не список

a=int(input('a:'))

for i in range(2,a+1):
    isPrime = True
    for j in range (2,i):
        if i%j==0:
            isPrime = False
            break

    if isPrime:
        print(i) 

разумное зерно в коде было, но до конца доведено не было

вам надо было проверять делится ли число i на число от 2 до i и если не делится - выводить его как простое, а не делать какие-то странные манипуляции при этом

P.S.

кстати, а что с буквой Ы?

P.P.S.

для любителей изврата:

print(*filter(lambda i: all(map(lambda x: i % x != 0, range(2, i))), range(2, int(input('a:')) + 1)), sep='\n')

чуть-чуть покороче :)

print(*filter(lambda i: all(i % x for x in range(2, i)), range(2, int(input('a:')) + 1)), sep='\n')

и совсем беспредельно короткий вариант:

print(*[i for i in range(2, int(input('a:')) + 1) if all(i % x for x in range(2, i))], sep='\n')
→ Ссылка
Автор решения: Zhihar

Выяснилось, что задача сводится к следующей:

требуется найти все цифры введённого пользователем числа, которые являются простыми числами

value = int(input("a: "))

while value > 0:
    digit = value % 10
    value //= 10

    if digit in {2, 3, 5, 7}:
        print(digit)

Если нужен исходный порядок, то придется сначала накопить результат

value = int(input("a: "))

result = list()

while value > 0:
    digit = value % 10
    value //= 10

    if digit in {2, 3, 5, 7}:
        result.insert(0, digit)

print(*result)
→ Ссылка