


Python делите ли
Простыми называются такие натуральные числа, у которых ровно два делителя: 1 и само это число (они должны отличаться, то есть 1 — не простое число). Простые числа и вообще разложение чисел на множители долгое время были предметом абстрактной игры ума математиков, но в настоящее время некоторые математические понятия, связанные с разложением на множители, играют важнейшую роль в шифровании трафика в интернете.
Напишите программу, которая считывает одно натуральное число и выводит на первой строке все делители этого числа в порядке возрастания, разделённые пробелами, а на второй — «ПРОСТОЕ» или «НЕТ» в зависимости от того, простым было введённое число или нет.
Формат ввода
Одно натуральное число.
Формат вывода
В первой строке — все делители введенного числа, записанные через пробел (перед первым и после последнего делителя пробелов нет).
Во второй — сообщение «ПРОСТОЕ» или «НЕТ».
Пример
Ввод Вывод
12 1 2 3 4 6 12
НЕТ
В выводе не должно быть пробела в конце!
вот мой код,
w = 0
a = int(input())
for i in range(1, a + 1):
if a % i == 0:
w = w + 1
print(i, end=" ")
print()
if w > 2:
print("НЕТ")
else:
print("ПРОСТОЕ")
w = 0
a = int(input())
for i in range(1, a + 1):
if a % i == 0:
w = w + 1
print(i, end=" ")
print('\n', end='')
if w > 2:
print("НЕТ")
else:
print("ПРОСТОЕ")
так надо тебе?
n, k, t = int(input()), 1, []
while k * k < n: # т.е. k < √n
if n % k == 0: t += [k, n // k] # получаем сразу 2 делителя
k += 1
if k * k == n: t += [k] # если n - квадрат целого числа, появляется непарный делитель
print(*t) # вывод списка делителей
print(['НЕТ', 'ПРОСТОЕ'][len(t) == 2])
С множествами чуть проще:
n, k, t = int(input()), 1, set()
while k * k <= n:
if n % k == 0: t |= {k, n // k}
k += 1
print(*t)
print(['НЕТ', 'ПРОСТОЕ'][len(t) == 2])
from math import isqrt
n = int(input())
if n == 1:
print(1, "НЕТ", sep = '\n')
elif n == 2 or n == 3:
print(1, n, "\nПРОСТОЕ")
else:
deliteli, korenj = [], isqrt(n)
for i in range(1, korenj):
if n % i == 0:
deliteli += [i, n // i]
if korenj*korenj == n:
deliteli.append(korenj)
print(*sorted(deliteli))
print("ПРОСТОЕ" if len(deliteli) == 2 else "НЕТ")