-1

我正在尝试创建一个能够以形式分解三项式的程序

x² + bx + c

其中bc是整数,如果可以因式分解,则输出三项式的因式分解,如果不能分解,则输出“此三项式不能因式分解” 最终乘积被传递给两个单独的程序

  • 一个包含函数包的 Python 文件。该文件不应产生任何输出。也就是说,它应该只包含函数,没有函数调用、输入语句或打印语句。

  • 另一个导入您的第一个包并使用它来分解带有输入语句的简单三项式。

现在我只是将它们放在一个程序中以便更轻松地编辑它并计划稍后将其分开。该程序有效,并给了我看似随机的输出数量,虽然它们是正确的,但我不希望它重复 300 次。

另外,如果没有因素,我不确定如何使它成为输出因素。

保理工具箱

def findFac(c): #set the count to start at -1 or 1
    if c > 0:
        count=int(1)
    elif 0 > c:
        count=int(-1)
    repeat (c,count)

def repeat(c,count):
    if c > 0:
         #finds factors if c is positive
        for i in range(count,c+1,1):
                if c%i == 0:
                   num=c/i
                   testB(i,num,count)
    elif 0 > c:
        #finds factors is c is negitive

        for i in range(count,c-1,-1): 
                if abs(c)%abs(i) == 0:
                    num=c/i
                    testB(i,num,count)



def testB(i,num,count): #checks if factors add to b
    if i+num==b:
        if i*num==c:
            print ("(x+",i,")(x+",num,")")
            a=1

    elif i-num==b:
       if i*(-1*num)==c:
            print ("(x+",i,")(x-",num,")")
            a=1

    elif num-i==b:
       if (-1*i)*num==c:
            print("(x-",i,")(x+",num,")")

            a=1
    else:        
        if c > 0 :
            count=count+1
        else:
            count=count-1
        repeat(c,count)

第二个节目

print ("Please enter varibles b and c for a quadratic expression in the form:")
print("x^2+bx+c")
b=int(input("Please enter a interger for 'b': "))
c=int(input("Please enter a interger for 'c': "))

findFac(c)
4

1 回答 1

1

我不会这样做,原因有两个:

  1. 它试图只找到整数因子。
  2. 这是非常低效的。

有更好的方法来做到这一点。由于我们只处理一个变量二次多项式(ax 2 + bx + c),我们可以使用二次公式直接找到因子

(-b ± (b 2 - 4ac) 1/2 )/2a

我们现在只需要检查 b 2 - 4ac > 0 是否使多项式可因式分解。

因式分解多项式将采用以下形式:

a[x - (-b+(b 2 - 4ac) 1/2 )/2a][x - (-b-(b 2 - 4ac) 1/2 )/2a]

于 2019-11-12T18:10:58.447 回答