[PYTHON] Créons un dispositif de factorisation automatique / Junior High School Mathematics Vol.1

Peut-il être factorisé en utilisant la programmation?

** * Bienvenue s'il y a une amélioration, alors merci. ** **

Après avoir étudié, j'ai commencé à penser à faire un appareil de factorisation automatique, mais le code source n'est pas beau. .. .. Bien qu'elle soit pleine de sentiments à certains endroits, une source qui peut être factorisée au niveau des mathématiques de base du premier cycle du secondaire a été complétée.

Il peut être préférable de factoriser à partir du théorème des facteurs. J'ai des ennuis si je reçois beaucoup de minutes, alors je me demande si je dois le faire régulièrement.

Si vous utilisez le code source suivant, l'ordinateur le fera pour vous au niveau des mathématiques du premier cycle du secondaire, vous pourrez donc peut-être faire vos devoirs! ??

J'espère qu'il sera possible de factoriser comme suit. STEP1 ne semble pas prendre beaucoup de temps, mais je suis fatigué aujourd'hui, alors je suis allé au collège en mathématiques.

STEP1 : (a+c)x**2 + (ad+bc)x + bd = (ax+b)(cx+d) ÉTAPE 2: Décomposition factorielle de l'équation cubique à l'aide du théorème de facteur ÉTAPE 3: Couvrir de manière exhaustive les autres examens d'entrée à l'université

Si vous passez la valeur d'entrée au code ci-dessous, la formule de factorisation sera sortie.

[Règles d'entrée] ① Laissez un espace entre le signe et l'expression (2) Dans le cas de 1 * x, 1 est généralement omis, mais il est décrit comme 1x.

(Exemple) input x**2 - 20x + 96 output (x - 12)(x - 8)

input x**2 - 9 output (x + 3)(x - 3)

input x**2 - 4x + 4 output (x - 2)**2


import math

a = 0
b = 0
jud1 = "+"
jud2 = "+"

nums = input().split()

if len(nums) <= 3:
    a = int(math.sqrt(int(nums[2])))
    print("(x + " + str(a) + ")(x - " + str(a) + ")")
else:
    if nums[3] == "-":
        nums[4] = int(nums[4])*(-1)
    
    li = list(nums[2].split("x"))
    
    if nums[1] == "-":
        li[0] = int(li[0])*(-1)

    for i in range(-100,100):
        if (i * (int(li[0]) - i)) == int(nums[4]):
            a = i
            b = int(li[0]) - i
    
    if a < 0:
        jud1 = "-"
        
    if b < 0:
        jud2 = "-"
    
    if a == b:
        print("(x " + jud1 , str(abs(a)) + ")**2")
    else:
        print("(X " + jud1 , str(abs(a)) + ")(x " + jud2 , str(abs(b)) + ")")

Points à améliorer

Puisqu'il s'agit d'un débutant, il peut y avoir un moyen simple de le trouver, mais je pense que ce serait plus intelligent si je pouvais facilement extraire les coefficients de chaque terme (en incluant de préférence le code) **. De plus, créez de force un modèle avec seulement deux termes, tels que «x ** 2 -9».

if len(nums) <= 3:
    a = int(math.sqrt(int(nums[2])))
    print("(x + " + str(a) + ")(x - " + str(a) + ")")

C'est l'endroit le plus désagréable à dire. J'ai réussi jusqu'à présent, mais je me demande quoi faire parce que j'ai des ennuis quand quelque chose comme hey x ** 3-8 sort.

Recommended Posts

Créons un dispositif de factorisation automatique / Junior High School Mathematics Vol.1
Comité du premier cycle du secondaire
[Mathématiques au lycée + python] Problème de logistique
Comité du premier cycle du secondaire (version Réseau X)