import math import sympy from IPython.display import display sympy.init_printing() sympy.var("x") while True: try: a=int(input("a= ")) b=int(input("b= ")) c=int(input("c= ")) break except ValueError: print("整数を入力してください。") f=a*x**2+b*x+c print("問題は ",f) display(f) print("その答は ",end="") answer1="({}x{:+})({}x{:+})" last=int(math.sqrt(abs(a)))+1 last2=int(math.sqrt(abs(c)))+1 flag1=False for i in range(1,last): if a%i == 0: for j in range(1,last2): if c%j == 0 and i*(c//j)+(a//i)*j == b: print(answer1.format(i,j,a//i,c//j)) flag1=True break if c%j == 0 and i*j+(a//i)*(c//j) == b: print(answer1.format(i,c//j,a//i,j)) flag1=True break if c%j == 0 and i*(-c//j)+(a//i)*(-j) == b: print(answer1.format(i,-j,a//i,-c//j)) flag1=True break if c%j == 0 and i*(-j)+(a//i)*(-c//j) == b: print(answer1.format(i,-c//j,a//i,-j)) flag1=True break if flag1: break else: print("因数分解はできない。")