三次(高次)多项式因式分解的一个小技巧

分解三次多项式时,比如对y=x³-3x²-9x-5进行因式分解。先求出常数项(也就是-5)的各因数,对于-5来说就是±1,±5。将这四个因数分别带入原式,如果结果为0,那这个因数就是y的一个根。

例题中-1和5成立。可以初步分解为:y=(x+1)(x-5)(x+k)的形式。因为是三次多项式,如果可以分解,其必为三个首一形式相乘,形如x+k。由于四个因数只有两个成立,剩下的一个根应改为重根,即-1或5。由于常数项是-5,很容易判断k=1。于是分解完毕,y=(x+1)(x-5)(x+1)=(x+1)²(x-5)。验证后正确。

方法使用时有一个限制条件:y=0有解,且解均为实整数。只有满足这个条件,高次方多项式y才可分解为(x+k)乘积的形式。

在这个前提条件下,算式中的常数项,就是各个括号内k的乘积。那么反推回去,括号内的各个常数一定是展开后常数的一个因数(可能有正负号的不同)。也就是说,y=0的所有解都能在常数的因数中找到(同样可能有正负号的不同)。由此可以推广到高次多项式的分解。

对于不符合限制条件的多项式,该方法便不再适用,需要另寻他法。

参考资料

如何因式分解三次多项式 - 知乎 (zhihu.com)

  • 7
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个用C++编写的多项式因式解程序的示例: ```cpp #include <iostream> #include <vector> struct Term { int coefficient; int exponent; }; std::vector<Term> factorizePolynomial(int n) { std::vector<Term> factors; for (int i = 2; i * i <= n; i++) { if (n % i == 0) { int count = 0; while (n % i == 0) { count++; n /= i; } factors.push_back({ i, count }); } } if (n > 1) { factors.push_back({ n, 1 }); } return factors; } void printFactors(const std::vector<Term>& factors) { for (const auto& term : factors) { std::cout << term.coefficient << "x^" << term.exponent; if (&term != &factors.back()) { std::cout << " * "; } } std::cout << std::endl; } int main() { int n; std::cout << "Enter a polynomial: "; std::cin >> n; std::vector<Term> factors = factorizePolynomial(n); std::cout << "Factors: "; printFactors(factors); return 0; } ``` 这个程序使用了一个`Term`结构体来表示多项式中的每一项,包括系数和指数。`factorizePolynomial`函数接受一个整数`n`,并返回一个包含多项式因子的`Term`向量。它通过遍历从2到sqrt(n)的数,找到n的所有因子,并计算每个因子的指数。如果n不为1,则将n本身作为一个因子。`printFactors`函数用于打印因子的结果。 在主函数中,程序首先从用户输入中获取一个整数作为多项式的值。然后,它调用`factorizePolynomial`函数将多项式进行因式分解,并将结果打印到控制台上。 请注意,该程序仅适用于整数系数的多项式,并且在因式分解时假设多项式的因子是素数。如果你有其他需求或疑问,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值