4

我正在创建一个程序来分解三项式,但我有点困惑和混淆,我不知道如何正确打印输出。

三项式示例:

2x**2+6x+4 = (1x+2)(2x+2)

到目前为止,我的代码只考虑了等式的每个部分

def factortri(x, b, c, e):
    for i in range(x): 
        if i > 0: 
            if x%i == 0: 
                if i > x/i: 
                    pass
                else: 
                   h = "%s, %s"%(i,x/i)
                   print h
    for i in range(e): 
        if i > 0: 
            if e%i == 0: 
                if i > e/i: 
                    pass
                else:
                    s = (e/i)
                    f = "%s,%s"%(i,s)
                    print f
                    if i*x + s*x == c: 
                        print i
                        print x
                        print s
                        print x
    for l in range(b): 
        if l > 0: 
            if b%l == 0: 
                if l > b/l: 
                    pass
                else:
                    r = (b/l)
                    g = "%s, %s"%(l,r) 
                    if (l+i)*(r+s)== c+e:
                        print "yes"
                    if (r+i)*(l+s)== c+e:
                        print "yes"
                    if (r+s)*(l+i)== c+e:
                        print "yes"
                    if (l+s)*(r+i)== c+e:
                        print "yes"

x = input("First Tri Co-ef: ")
b = input("First Tri Exponent: ")
c = input("Middle Tri Co-ef: ")
e = input("Last Trinomial: ")

factortri(x, b, c, e)

有没有更简单的方法来做到这一点?

4

2 回答 2

4

如果我理解正确,你所有的三项式都是只有一个变量的二次多项式。我会这样解决这个问题:

首先将二次多项式ax^2 + bx + c转化为一元形式,x^2 + px + q将其除以a,然后将此多项式设置为 0 并使用公式x_{1,2} = -p/2 +/- sqrt((p/2)^2-q)(例如 Wikipedia 上更具可读性的版本(http://en.wikipedia.org/wiki/Quadratic_equation#Quadratic_formula ) 得到两个解决方案。

现在您的解很简单a(x-x1)(x-x2),其中 x1 和 x2 是二次方程的解。

我添加了一个示例以使这一点更清楚:

如果你有一个方程2x^2 + 6x + 4,你将它除以 a=2 并得到x^2 + 3x +2,现在你使用上面提到的公式并得到解 x1=-2 和 x2=-1。现在你把所有东西放在一起得到a(x-x1)(x-x2) = 2(x+2)(x+1),这和你的例子一样。

于 2013-04-19T06:34:38.687 回答
1

如何使用二次公式找到因子,然后将值代入?

http://en.wikipedia.org/wiki/Quadratic_equation

注意:只有当指数在算术级数中时,才能使用此方法。我会在评论中问你这个问题,但我没有什么可做的。

于 2013-04-19T06:31:21.753 回答