Разложение на чётнопростые python

Рейтинг: 3Ответов: 0Опубликовано: 26.01.2023

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

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

— чётнопростые.

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

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

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

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

Примеры

ввод вывод
6 prime
4 single
2 2

Вот мой код. Ответы выдаёт верные, но проверку проходит на 2 из 27. Решаю на сириусе. И это последнее задание, с которым не могу разобраться. Пожалуйста, помогите разобраться.

    def even_prime_check(n): 
    if n % 4 == 0:
        return False
    else:
        return True

def even_prime_factorization(n): 
    a = []
    b = []
    a.append(n//2)
    a.append(2)
    check1 = a[0]
    check2 = a[1]

    for d in range(6,10**6,4):
        if n%d == 0 and even_prime_check(n//d) and n//d != check2 and d != check1:
            b.append(n//d)
            b.append(d)
            break

    return a,b

n = int(input())
a,b = even_prime_factorization(n)

if even_prime_check(n):
    print('prime')

elif len(a) == 2 and len(b) == 0:
    print('single')
    print(' '.join(map(str, a)))

elif len(a) == 2 and len(b) == 2:
    print('many')
    print(' '.join(map(str, a)))
    print(' '.join(map(str, b)))

Ответы

Ответов пока нет.