给定一个多项式,确定它是否为质数。
多项式是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}
或任何类似的方式。 - 如果输出为素数,则输出为真值,如果为复合值,则输出为假值。您必须为所有质数产生相同的真实值,并为所有复合多项式产生相同的假值。
- 输入至少为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
11
无论高尔夫运动如何,从快速谷歌搜索到这都是一个难题。
—
orlp
我在思考纠正的首要你的意思是束缚?如果是这样,那么这基本上是关于分解多项式的问题的变体,我怀疑它不会吸引任何不分解的答案。
—
彼得·泰勒
@AlexA,有很多很多的“如果”测试,其工作的一些多项式,但问题是要求一个“当且仅当”测试,适用于所有多项式。
—
Peter Taylor
这是一个很好的问题!注意,通常多项式相对于基环(或场)仅是质数。特别是,如果该字段是复数,则没有一个大于2的次数的多项式为质数。因此,我将指定您是否要使用Rational(可能是最简单的)Integer(这也将涉及一些整数分解)或对某些数字m取模。如果m为质数,则有相当简单的算法。否则情况会更棘手...(但可行)
—
科迪