#4u: Coding in Python {FACTORIZATION}

e='pos'
f='neg'
g='zer'
dick='small'
def hcfh(a,b,c,d):
    z=max(a,b,c,d)
    la=[]
    for j in range(z,0,-1):
        if a%j==0:
            if b%j==0:
                if c%j==0:
                    if d%j==0:
                        la.append(j)
    t=max(la)
    return(t)
            
def hcf(a,b):
    z=max(a,b)
    lst=[]
    for i in range(z,0,-1):
        if a%i==0 and b%i==0:
            lst.append(i)
       
    m=max(lst)
    return(m)

def mymod(x):
    if x>0:return 'pos'
    if x<0:return 'neg'
    if x==0:return 'zer'
def man(a,b,c,d):
    if mymod(a)==g:
        if mymod(b)==e:
            if mymod(c)==e:
                if mymod(d)==e:
                    return 'TWO'
                if mymod(d)==f:
                    return 'oneONE'
            if mymod(c)==f:
                if mymod(d)==f:
                    return 'oneONE'
                if mymod(d)==e:
                    return 'two'         
    if mymod(a)==e:
        if mymod(b)==e:
            if mymod(c)==e:
                if mymod(d)==e:
                    return '3'
                
            if mymod(c)==f:
                if mymod(d)==f:
                    return 'oneTWO'
        if mymod(b)==f:
            if mymod(c)==e:
                if mymod(d)==e:
                    return 'twoONE'
                if mymod(d)==f:
                    return '3k'
            if mymod(c)==f:
                if mymod(d)==e:
                    return 'twoONE'
                if mymod(d)==f:
                    return 'oneTWO'
print('ax³ + bx² + cx + d')
print()
a=int(input('Enter value of a (coefficiency of x³) : '))

b=int(input('Enter value of b (coefficiency of x²) : '))
c=int(input('Enter value of c (coefficiency of x) : '))
d=int(input('Enter value of d (coefficiency of constant) : '))
print()
if a==0:
    print('  ','(',b,')x² +(',c,')x +(',d,')')
    print(' = ',end='')
else:
    print('  ',a,'x³','+(',b,')x² +(',c,')x +(',d,')')
    print(' = ',end='')
if a<0:
    a=a*-1
    b=b*-1
    c=c*-1
    d=d*-1
    pp=hcfh(a,b,c,d)*-1
if a==0:
    if b<0:
        
        a=a*-1
        b=b*-1
        c=c*-1
        d=d*-1
        pp=hcfh(a,b,c,d)*-1
        print(pp)
        
        
x=0
y=0
eq1=(a*(x**3))+(b*(x**2))+(c*(x))+d
eq2=(a*(y**3))+(b*(y**2))+(c*(y))+d
if a!=0:
    while 1==1:
        if x==-600:x=0;break
        if man(a,b,c,d)=='3k':break
        x=x-1
        eq1=(a*(x**3))+(b*(x**2))+(c*(x))+d
        if eq1==0:
            break
    while 1==1:
        if x==0:
            if y==600:y=0;break
            if man(a,b,c,d)=='3':break
            y=y+1
            eq2=+(a*(y**3))+(b*(y**2))+(c*(y))+d
            if eq2==0:
                break
        else:
            break
    
    if y==0:
        x=x*-1
        m=a
        n=b-(m*x)
        o=c-(n*x)
    if x==0:
        y=y*-1
        m=a
        n=b-(m*y)
        o=c-(n*y)
if a==0:
    m=b
    n=c
    o=d
    x=69
    y=69
pp=hcfh(a,b,c,d)

if a>0:
    if x==0 and y==0:
        dick= 'large'
p1=(n+(((n**2)-(4*m*o))**(1/2)))
q1=n-(((n**2)-(4*m*o))**(1/2))
p=int(-1*p1)
q=int(-1*q1)
deno=2*m
pj=int(p/(hcf(deno,p)))
qj=int(q/(hcf(deno,q)))
denopj=int(deno/(hcf(p,deno)))
denoqj=int(deno/(hcf(q,deno)))

if dick=='small':
    if pp==1:
        if a!=0:
            if y==0:
                if denoqj==1:
                    if denopj>1:
                        if mymod(p)==f and mymod(q)==f:print('(','x +',x,')','(',denopj,'x +',-1*pj,')','(','x +',-1*qj,')','1')
                        if mymod(p)==e and mymod(q)==e:print('(','x +',x,')','(',denopj,'x -',pj,')','(','x -',qj,')','2')
                        if mymod(p)==f and mymod(q)==e:print('(','x +',x,')','(',denopj,'x +',-1*pj,')','(','x -',qj,')','3')
                        if mymod(p)==e and mymod(q)==f:print('(','x +',x,')','(',denopj,'x -',pj,')','(','x -',-1*qj,')','4')
                    if denopj==1:
                        if mymod(p)==f and mymod(q)==f:print('(','x +',x,')','(','x +',-1*pj,')','(','x +',-1*qj,')','5')
                        if mymod(p)==e and mymod(q)==e:print('(','x +',x,')','(','x -',pj,')','(','x -',qj,')','6')
                        if mymod(p)==f and mymod(q)==e:print('(','x +',x,')','(','x +',-1*pj,')','(','x -',qj,')','7')
                        if mymod(p)==e and mymod(q)==f:print('(','x +',x,')','(','x -',pj,')','(','x +',-1*qj,')','8')
                if denopj==1:
                    if denoqj>1:
                        if mymod(p)==f and mymod(q)==f:print('(','x +',x,')','(','x -',-1*pj,')','(',denoqj,'x -',-1*qj,')','9')
                        if mymod(p)==e and mymod(q)==e:print('(','x +',x,')','(','x -',pj,')','(',denoqj,'x -',qj,')','10')
                        if mymod(p)==f and mymod(q)==e:print('(','x +',x,')','(','x +',-1*pj,')','(',denoqj,'x -',qj,')','11')
                        if mymod(p)==e and mymod(q)==f:print('(','x +',x,')','(','x -',pj,')','(',denoqj,'x +',-1*qj,')','12')
                if denopj>1 and denoqj>1:
                    if mymod(p)==f and mymod(q)==f:print('(','x +',x,')','(',denopj,'x -',-1*pj,')','(',denoqj,'x -',-1*qj,')','13')
                    if mymod(p)==e and mymod(q)==e:print('(','x +',x,')','(',denopj,'x -',pj,')','(',denoqj,'x -',qj,')','14')
                    if mymod(p)==f and mymod(q)==e:print('(','x +',x,')','(',denopj,'x +',-1*pj,')','(',denoqj,'x -',qj,')','15')
                    if mymod(p)==e and mymod(q)==f:print('(','x +',x,')','(',denopj,'x -',pj,')','(',denoqj,'x +',-1*qj,')','16')
            if x==0:
                if denoqj==1:
                    if denopj>1:
                        if mymod(p)==f and mymod(q)==f:print('(','x -',-1*y,')','(',denopj,'x +',-1*pj,')','(','x +',-1*qj,')','17')
                        if mymod(p)==e and mymod(q)==e:print('(','x -',-1*y,')','(',denopj,'x -',pj,')','(','x -',qj,')','18')
                        if mymod(p)==f and mymod(q)==e:print('(','x -',-1*y,')','(',denopj,'x +',-1*pj,')','(','x -',qj,')','19')
                        if mymod(p)==e and mymod(q)==f:print('(','x -',-1*y,')','(',denopj,'x -',pj,')','(','x -',-1*qj,')','20')
                    if denopj==1:
                        if mymod(p)==f and mymod(q)==f:print('(','x -',-1*y,')','(','x +',-1*pj,')','(','x +',-1*qj,')','21')
                        if mymod(p)==e and mymod(q)==e:print('(','x -',-1*y,')','(','x -',pj,')','(','x -',qj,')','22')
                        if mymod(p)==f and mymod(q)==e:print('(','x -',-1*y,')','(','x +',-1*pj,')','(','x -',qj,')','23')
                        if mymod(p)==e and mymod(q)==f:print('(','x -',-1*y,')','(','x -',pj,')','(','x +',-1*qj,')','24')
                if denopj==1:
                    if denoqj>1:
                        if mymod(p)==f and mymod(q)==f:print('(','x -',-1*y,')','(','x -',-1*pj,')','(',denoqj,'x -',-1*qj,')','25')
                        if mymod(p)==e and mymod(q)==e:print('(','x -',-1*y,')','(','x -',pj,')','(',denoqj,'x -',qj,')','26')
                        if mymod(p)==f and mymod(q)==e:print('(','x -',-1*y,')','(','x +',-1*pj,')','(',denoqj,'x -',qj,')','27')
                        if mymod(p)==e and mymod(q)==f:print('(','x -',-1*y,')','(','x -',pj,')','(',denoqj,'x +',-1*qj,')','28')
                if denopj>1 and denoqj>1:
                    if mymod(p)==f and mymod(q)==f:print('(','x -',-1*y,')','(',denopj,'x -',-1*pj,')','(',denoqj,'x -',-1*qj,')','29')
                    if mymod(p)==e and mymod(q)==e:print('(','x -',-1*y,')','(',denopj,'x -',pj,')','(',denoqj,'x -',qj,')','30')
                    if mymod(p)==f and mymod(q)==e:print('(','x -',-1*y,')','(',denopj,'x +',-1*pj,')','(',denoqj,'x -',qj,')','31')
                    if mymod(p)==e and mymod(q)==f:print('(','x -',-1*y,')','(',denopj,'x -',pj,')','(',denoqj,'x +',-1*qj,')','32')
                    
            
        if a==0:
            if y!=0:
                if denoqj==1:
                    if denopj>1:
                        if mymod(p)==f and mymod(q)==f:print('(',denopj,'x +',-1*pj,')','(','x +',-1*qj,')','33')
                        if mymod(p)==e and mymod(q)==e:print('(',denopj,'x -',pj,')','(','x -',qj,')','34')
                        if mymod(p)==f and mymod(q)==e:print('(',denopj,'x +',-1*pj,')','(','x -',qj,')','35')
                        if mymod(p)==e and mymod(q)==f:print('(',denopj,'x -',pj,')','(','x -',-1*qj,')','36')
                    if denopj==1:
                        if mymod(p)==f and mymod(q)==f:print('(','x +',-1*pj,')','(','x +',-1*qj,')','37')
                        if mymod(p)==e and mymod(q)==e:print('(','x -',pj,')','(','x -',qj,')','38')
                        if mymod(p)==f and mymod(q)==e:print('(','x +',-1*pj,')','(','x -',qj,')','39')
                        if mymod(p)==e and mymod(q)==f:print('(','x -',pj,')','(','x +',-1*qj,')','40')
                if denopj==1:
                    if denoqj>1:
                        if mymod(p)==f and mymod(q)==f:print('(','x -',-1*pj,')','(',denoqj,'x -',-1*qj,')','41')
                        if mymod(p)==e and mymod(q)==e:print('(','x -',pj,')','(',denoqj,'x -',qj,')','42')
                        if mymod(p)==f and mymod(q)==e:print('(','x +',-1*pj,')','(',denoqj,'x -',qj,')','43')
                        if mymod(p)==e and mymod(q)==f:print('(','x -',pj,')','(',denoqj,'x +',-1*qj,')','44')
                if denopj>1 and denoqj>1:
                    if mymod(p)==f and mymod(q)==f:print('(',denopj,'x -',-1*pj,')','(',denoqj,'x -',-1*qj,')','45')
                    if mymod(p)==e and mymod(q)==e:print('(',denopj,'x -',pj,')','(',denoqj,'x -',qj,')','46')
                    if mymod(p)==f and mymod(q)==e:print('(',denopj,'x +',-1*pj,')','(',denoqj,'x -',qj,')','47')
                    if mymod(p)==e and mymod(q)==f:print('(',denopj,'x -',pj,')','(',denoqj,'x +',-1*qj,')','48')
                    
            if x==0:
                if denoqj==1:
                    if denopj>1:
                        if mymod(p)==f and mymod(q)==f:print('(',denopj,'x +',-1*pj,')','(','x +',-1*qj,')','49')
                        if mymod(p)==e and mymod(q)==e:print('(',denopj,'x -',pj,')','(','x -',qj,')','50')
                        if mymod(p)==f and mymod(q)==e:print('(',denopj,'x +',-1*pj,')','(','x -',qj,')','51')
                        if mymod(p)==e and mymod(q)==f:print('(',denopj,'x -',pj,')','(','x +',-1*qj,')','51')
                    if denopj==1:
                        if mymod(p)==f and mymod(q)==f:print('(','x +',-1*pj,')','(','x +',-1*qj,')','52')
                        if mymod(p)==e and mymod(q)==e:print('(','x -',pj,')','(','x -',qj,')','53')
                        if mymod(p)==f and mymod(q)==e:print('(','x +',-1*pj,')','(','x -',qj,')','54')
                        if mymod(p)==e and mymod(q)==f:print('(','x -',pj,')','(','x +',-1*qj,')','55')
                if denopj==1:
                    if denoqj>1:
                        if mymod(p)==f and mymod(q)==f:print('(','x +',-1*pj,')','(',denoqj,'x +',-1*qj,')','56')
                        if mymod(p)==e and mymod(q)==e:print('(','x -',pj,')','(',denoqj,'x -',qj,')','57')
                        if mymod(p)==f and mymod(q)==e:print('(','x +',-1*pj,')','(',denoqj,'x -',qj,')','58')
                        if mymod(p)==e and mymod(q)==f:print('(','x -',pj,')','(',denoqj,'x +',-1*qj,')','59')

                
                if denopj>1 and denoqj>1:
                    if mymod(p)==f and mymod(q)==f:print('(',denopj,'x -',-1*pj,')','(',denoqj,'x -',-1*qj,')','60')
                    if mymod(p)==e and mymod(q)==e:print('(',denopj,'x -',pj,')','(',denoqj,'x -',qj,')')
                    if mymod(p)==f and mymod(q)==e:print('(',denopj,'x +',-1*pj,')','(',denoqj,'x -',qj,')','61')
                    if mymod(p)==e and mymod(q)==f:print('(',denopj,'x -',pj,')','(',denoqj,'x +',-1*qj,')','62')
    if pp!=1:
        if a!=0:
            if y==0:
                if denoqj==1:
                    if denopj>1:
                        if mymod(p)==f and mymod(q)==f:print('(',pp,')','(','x +',x,')','(',denopj,'x +',-1*pj,')','(','x +',-1*qj,')','63')
                        if mymod(p)==e and mymod(q)==e:print('(',pp,')','(','x +',x,')','(',denopj,'x -',pj,')','(','x -',qj,')','64')
                        if mymod(p)==f and mymod(q)==e:print('(',pp,')','(','x +',x,')','(',denopj,'x +',-1*pj,')','(','x -',qj,')','65')
                        if mymod(p)==e and mymod(q)==f:print('(',pp,')','(','x +',x,')','(',denopj,'x -',pj,')','(','x -',-1*qj,')','66')
                    if denopj==1:
                        if mymod(p)==f and mymod(q)==f:print('(',pp,')','(','x +',x,')','(','x +',-1*pj,')','(','x +',-1*qj,')','67')
                        if mymod(p)==e and mymod(q)==e:print('(',pp,')','(','x +',x,')','(','x -',pj,')','(','x -',qj,')')
                        if mymod(p)==f and mymod(q)==e:print('(',pp,')','(','x +',x,')','(','x +',-1*pj,')','(','x -',qj,')','68')
                        if mymod(p)==e and mymod(q)==f:print('(',pp,')','(','x +',x,')','(','x -',pj,')','(','x +',-1*qj,')','69')
                if denopj==1:
                    if denoqj>1:
                        if mymod(p)==f and mymod(q)==f:print('(',pp,')','(','x +',x,')','(','x +',-1*pj,')','(',denoqj,'x +',-1*qj,')','70')
                        if mymod(p)==e and mymod(q)==e:print('(',pp,')','(','x +',x,')','(','x -',pj,')','(',denoqj,'x -',qj,')','71')
                        if mymod(p)==f and mymod(q)==e:print('(',pp,')','(','x +',x,')','(','x +',-1*pj,')','(',denoqj,'x -',qj,')','72')
                        if mymod(p)==e and mymod(q)==f:print('(',pp,')','(','x +',x,')','(','x -',pj,')','(',denoqj,'x +',-1*qj,')','73')
                else:
                    if mymod(p)==f and mymod(q)==f:print('(',pp,')','(','x +',x,')','(',denopj,'x +',-1*pj,')','(',denoqj,'x +',-1*qj,')','74')
                    if mymod(p)==e and mymod(q)==e:print('(',pp,')','(','x +',x,')','(',denopj,'x -',pj,')','(',denoqj,'x -',qj,')','75')
                    if mymod(p)==f and mymod(q)==e:print('(',pp,')','(','x +',x,')','(',denopj,'x +',-1*pj,')','(',denoqj,'x -',qj,')','76')
                    if mymod(p)==e and mymod(q)==f:print('(',pp,')','(','x +',x,')','(',denopj,'x -',pj,')','(',denoqj,'x +',-1*qj,')','77')
                    
            if x==0:
                if denoqj==1:
                    if denopj>1:
                        if mymod(p)==f and mymod(q)==f:print('(',pp,')','(',denopj,'x +',-1*pj,')','(','x +',-1*qj,')','78')
                        if mymod(p)==e and mymod(q)==e:print('(',pp,')','(',denopj,'x -',pj,')','(','x -',qj,')','79')
                        if mymod(p)==f and mymod(q)==e:print('(',pp,')','(',denopj,'x +',-1*pj,')','(','x -',qj,')','80')
                        if mymod(p)==e and mymod(q)==f:print('(',pp,')','(',denopj,'x -',pj,')','(','x +',-1*qj,')','81')
                    if denopj==1:
                        if mymod(p)==f and mymod(q)==f:print('(',pp,')','(','x +',-1*pj,')','(','x +',-1*qj,')','82')
                        if mymod(p)==e and mymod(q)==e:print('(',pp,')','(','x -',pj,')','(','x -',qj,')','83')
                        if mymod(p)==f and mymod(q)==e:print('(',pp,')','(','x +',-1*pj,')','(','x -',qj,')','84')
                        if mymod(p)==e and mymod(q)==f:print('(',pp,')','(','x -',pj,')','(','x +',-1*qj,')','85')
                if denopj==1:
                    if denoqj>1:
                        if mymod(p)==f and mymod(q)==f:print('(',pp,')','(','x +',-1*pj,')','(',denoqj,'x +',-1*qj,')','86')
                        if mymod(p)==e and mymod(q)==e:print('(',pp,')','(','x -',pj,')','(',denoqj,'x -',qj,')','87')
                        if mymod(p)==f and mymod(q)==e:print('(',pp,')','(','x +',-1*pj,')','(',denoqj,'x -',qj,')','88')
                        if mymod(p)==e and mymod(q)==f:print('(',pp,')','(','x -',pj,')','(',denoqj,'x +',-1*qj,')','89')

                
                if denopj>1 and denoqj>1:
                    if mymod(p)==f and mymod(q)==f:print('(',pp,')','(',denopj,'x -',-1*pj,')','(',denoqj,'x -',-1*qj,')','90')
                    if mymod(p)==e and mymod(q)==e:print('(',pp,')','(',denopj,'x -',pj,')','(',denoqj,'x -',qj,')','91')
                    if mymod(p)==f and mymod(q)==e:print('(',pp,')','(',denopj,'x +',-1*pj,')','(',denoqj,'x -',qj,')','92')
                    if mymod(p)==e and mymod(q)==f:print('(',pp,')','(',denopj,'x -',pj,')','(',denoqj,'x +',-1*qj,')','93')
                    if mymod(p)==f and mymod(q)==f:print('(',pp,')','(','x -',-1*y,')','(',denopj,'x -',-1*pj,')','(',denoqj,'x -',-1*qj,')','94')
                    if mymod(p)==e and mymod(q)==e:print('(',pp,')','(','x -',-1*y,')','(',denopj,'x -',pj,')','(',denoqj,'x -',qj,')','95')
                    if mymod(p)==f and mymod(q)==e:print('(',pp,')','(','x -',-1*y,')','(',denopj,'x +',-1*pj,')','(',denoqj,'x -',qj,')','96')
                    if mymod(p)==e and mymod(q)==f:print('(',pp,')','(','x -',-1*y,')','(',denopj,'x -',pj,')','(',denoqj,'x +',-1*qj,')','97')
        if a==0:
            if y==69:
                if denoqj==1:
                    if denopj>1:
                        if mymod(p)==f and mymod(q)==f:print('(',pp,')','(',denopj,'x +',-1*pj,')','(','x +',-1*qj,')','98')
                        if mymod(p)==e and mymod(q)==e:print('(',pp,')','(',denopj,'x -',pj,')','(','x -',qj,')','99')
                        if mymod(p)==f and mymod(q)==e:print('(',pp,')','(',denopj,'x +',-1*pj,')','(','x -',qj,')','100')
                        if mymod(p)==e and mymod(q)==f:print('(',pp,')','(',denopj,'x -',pj,')','(','x -',-1*qj,')','101')
                    if denopj==1:
                        if mymod(p)==f and mymod(q)==f:print('(',pp,')','(','x +',-1*pj,')','(','x +',-1*qj,')','102')
                        if mymod(p)==e and mymod(q)==e:print('(',pp,')','(','x -',pj,')','(','x -',qj,')','103')
                        if mymod(p)==f and mymod(q)==e:print('(',pp,')','(','x +',-1*pj,')','(','x -',qj,')','104')
                        if mymod(p)==e and mymod(q)==f:print('(',pp,')','(','x -',pj,')','(','x +',-1*qj,')','105')
                if denopj==1:
                    if denoqj>1:
                        if mymod(p)==f and mymod(q)==f:print('(',pp,')','(','x -',-1*pj,')','(',denoqj,'x -',-1*qj,')','106')
                        if mymod(p)==e and mymod(q)==e:print('(',pp,')','(','x -',pj,')','(',denoqj,'x -',qj,')','107')
                        if mymod(p)==f and mymod(q)==e:print('(',pp,')','(','x +',-1*pj,')','(',denoqj,'x -',qj,')','108')
                        if mymod(p)==e and mymod(q)==f:print('(',pp,')','(','x -',pj,')','(',denoqj,'x +',-1*qj,')','109')
                if denopj>1 and denoqj>1:
                    if mymod(p)==f and mymod(q)==f:print('(',pp,')','(',denopj,'x -',-1*pj,')','(',denoqj,'x -',-1*qj,')','110')
                    if mymod(p)==e and mymod(q)==e:print('(',pp,')','(',denopj,'x -',pj,')','(',denoqj,'x -',qj,')','111')
                    if mymod(p)==f and mymod(q)==e:print('(',pp,')','(',denopj,'x +',-1*pj,')','(',denoqj,'x -',qj,')','112')
                    if mymod(p)==e and mymod(q)==f:print('(',pp,')','(',denopj,'x -',pj,')','(',denoqj,'x +',-1*qj,')','113')
    print()
    print('The number at end the should be ignored, it is only there for purpose of debugging.')
    
                    
            
if dick=='large':
    print('In this polynomials all zeros are in fractions and so we cannot factorize it on this code.')

        
        
Get codes here.
        

    

    
    

Comments