Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+4

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("ПРОСТОЕ")

По дате
По рейтингу
Аватар пользователя
Новичок
1234567891011
 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("ПРОСТОЕ") 

так надо тебе?

Аватар пользователя
Высший разум
1234567
 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]) 

С множествами чуть проще:

123456
 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]) 
Аватар пользователя
Мыслитель
123456789101112131415
 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 "НЕТ")