Предмет: Информатика, автор: catmdsf

Разложение на чётнопростые
В этой задаче рассматриваются только чётные целые числа.

Чётное натуральное число n
будем называть чётнопростым числом, если его нельзя представить в виде произведения двух чётных чисел. Например, числа 2
и 6
— чётнопростые.

Очевидно, что каждое число либо является чётнопростым, либо разлагается в произведение чётнопростых. Но такое разложение на чётнопростые не всегда единственно.

Входные данные

Дано чётное натуральное n≤109
.

Выходные данные

Если число n
чётнопростое, выведите слово prime. Если это число единственным образом разлагается в произведение двух и более чётнопростых, то выведите слово single, а в следующей строке выведите разложение этого числа на чётнопростые множители. Если число допускает несколько различных разложений на чётнопростые, то выведите слово many, а в следующих двух строках выведите два каких-нибудь различных разложения числа на чётнопростые множители.

Примеры
Ввод
Вывод
6
prime
4
single
2 2
ПРОГРАММИРОВАНИЕ НА ПАЙТОН ,ДАЮ 40баллов


p15: неплохая задача. Споткнулся на фразе "Но такое разложение на чётнопростые не всегда единственно". как раз оно единственно, потому что надо разложить до четнопростых. Хорошо. Допустим число 48. 2*24 - это не ответ, потому что 24 не разложено до четнопростого. 2*2*2*6 - это ответ, потому что разложено до четнопростых, но разложение единственно. Нельзя разложить по-другому.

Ответы

Автор ответа: archery
0

def calcEvenPrimes(n):

   print(n)

   if n < 0 or n > 109 or n % 2 != 0:

       print("input error")

       return

   if n % 4 != 0:

       print("prime")

       return

   primes = [3,5,7,11,13,17,19,23,29,31,37,41]

   dividers = []

   for p in primes:

       if (n//4) % p == 0:

           dividers.append(p)

   s = f"{'single' if len(dividers) <= 1 else 'many'}\n"

   t = n//2

   while t % 2 == 0:

       s += "2 "

       t //= 2

   else:

       s += f"{t*2}"

   if len(dividers) > 1:

       s += ", "

       t = n//4

       while t % 2 == 0:

           s += "2 "

           t //= 2

       else:

           s += f"{2*dividers[0]} {2*t//dividers[0]}"

   print(s)

# примеры использования

calcEvenPrimes(6)

calcEvenPrimes(4)

calcEvenPrimes(8)

calcEvenPrimes(12)

calcEvenPrimes(60)

calcEvenPrimes(96)

calcEvenPrimes(102)

calcEvenPrimes(24)


p15: 96
many
2 48, 4 24
[2, 3]
но 48 и 24 это не четнопростое.
p15: И что в скобках?
p15: Как и 4
archery: нда этого ньюанса не заметила
p15: mn=[]
n=int(input('введите четное число: '))
if n%4!=0: print('prime')
else:
for i in range(2,int(n**.5)+1,4):
if n%i==0: mn.append((i,n//i))
print('many' if len(mn)-1 else 'single')
print(*mn)

Она разлагает и первое точно четнопростое, но я до конца не понял с однозначностью разложения на четнопростые.
archery: если помогло, то выбери лучшим ответом, плиз
Похожие вопросы
Предмет: Алгебра, автор: iphonevideo28
Предмет: Українська мова, автор: katafilipova10
1. Вибери всі речення зі складеним присудком

Дідусь поїхав зустрітись з онукою.

Наші майстри здатні робити унікальні речі.

Водій повинен зупинитись перед пішохідним переходом.

На наступному уроці ми будемо працювати в команді.

Пізньої осені ліс оголений.

2. Познач усі речення, де потрібно поставити тире між підметом і присудк

Сьогодні цей урок останній.

Село Соломонове найзахідніша точка України.

Ця країна наша.

Помаранчевий то колір радості.

3. Познач одне речення зі складеним іменним присудком

Помалу Орест починав одужувати.

Людина здатна творити і величне, і мерзенне

Кішка виявилась саме тією.

Раптом вони перестали гомоніти і прислухались

4. Визнач тип присудка у реченні "Цей телефон - мій".

простий

складений iменний

складений дієслівний

5. Визнач присудок в реченні "Цей вірш став його лебединою піснею."

став

став піснею

став лебединою піснею

став його піснею
Предмет: Математика, автор: mumishutochkalubimka