Дано а - целое число, вывести все простые цифры числа (без строк)
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 шт):
Хз что не правильно делаю
подозреваю, что всё кроме первой строчки кода
А что ваш код вообще делать должен был бы? Например, зачем вообще 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')
Выяснилось, что задача сводится к следующей:
требуется найти все цифры введённого пользователем числа, которые являются простыми числами
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)