По заданному многочлену определите, является ли оно простым.
Полином - это то ax^n + bx^(n-1) + ... + dx^3 + ex^2 + fx + g
, где каждый член представляет собой постоянное число (коэффициент), умноженное на целую неотрицательную степень x
. Наивысшая мощность с ненулевым коэффициентом называется степенью. Для этой задачи мы рассмотрим только полиномы как минимум степени 1. То есть каждый полином содержит несколько x
. Кроме того, мы используем только полиномы с целыми коэффициентами.
Полиномы могут быть умножены. Например, (x+3)(2x^2-2x+3)
равно 2x^3+4x^2-3x+9
. Таким образом, 2x^3+4x^2-3x+9
может быть учтено x+3
и 2x^2-2x+3
, так что это составное.
Другие полиномы не могут быть учтены. Например, 2x^2-2x+3
не является произведением любых двух полиномов (игнорирование постоянных полиномов или полиномов с нецелыми коэффициентами). Следовательно, он прост (также известен как неприводимый).
правила
- Ввод и вывод может быть любым стандартным способом.
- Входные данные могут быть в виде строки
2x^2-2x+3
, списка коэффициентов{2,-2,3}
или любых аналогичных средств. - Вывод - это либо истинное значение, если оно простое, либо значение false, если оно сложное. Вы должны дать одинаковое истинное значение для всех простых чисел и одинаковое значение Ложного для всех составных многочленов.
- Вход будет иметь по крайней мере степень 1 и максимум степень 10.
- Вы не можете использовать встроенные инструменты для факторизации (целых чисел или выражений) или решения уравнений.
Примеры
Правда - премьер
x+3
-2x
x^2+x+1
x^3-3x-1
-2x^6-3x^4+2
3x^9-8x^8-3x^7+2x^3-10
Ложь - композит
x^2
x^2+2x+1
x^4+2x^3+3x^2+2x+1
-3x^7+5x^6-2x
x^9-8x^8+7x^7+19x^6-10x^5-35x^4-14x^3+36x^2+16x-12
Ответы:
Mathematica, 224 байта
Пояснение :
Метод Кронекера используется здесь. Этот метод генерирует некоторые полиномы более низкой степени и проверяет, существует ли фактор исходного полинома.
Тестовые случаи :
На моем ноутбуке нужно 14 секунд, чтобы понять, что
3x^9-8x^8-3x^7+2x^3-10
это главное.источник
PARI / GP, 16 байт, чертовски дешево
По какой-то причине это не было запрещено (учитывая, что команда не учитывает и не решает уравнения):
Прецедент
возвращает
1
(правда). Другие примеры работают аналогично.Но чтобы показать, что это трудно решить, вот полное решение.
Менее дешево, но sloooooooooow
В этом нет никакого смысла играть в гольф.
Редактировать: Комментаторы указали, что первый метод может быть запрещен хорошим вкусом, духом правил, Женевской конвенцией, стандартными лазейками и т. Д. Я не согласен, но в любом случае я разместил вторую версию вместе с первое и, конечно, кажется приемлемым.
источник
x^4+1
(что является классно приводимым мод при любом простом числе) неприводимо за 86 миллисекунд. Если ничто иное, другие не могут приспособиться и сыграть в эту версию.