Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

292
Vistas
¿Cómo cambiar √243 a 9√3 en Python? ¿Y cómo cambiar la raíz cuadrada en general?

Tengo una pregunta de matemáticas/python, ¿cómo cambiar un número grande en raíz cuadrada a un número pequeño (pero manteniendo el valor), por ejemplo, √243 a 9√3?

Y tengo otra pregunta, ¿cómo usarlo en mi código?

Código:

 import math dl=int(input("Podaj długość: ")) c=input("Który bok: przypdl, przypkr, przec: ") def find(x): global przypkr global przec global przypdl if c=="przec": przec=x przypkr=x/2 przypdl=przypkr*math.sqrt(3) elif c=="przypkr": przypkr=x przypdl=x*math.sqrt(3) przec=x*2 else: przypdl=x przypkr=x/math.sqrt(3) przec=przypkr*2 print(f'przeciwprostokątna: {przec}, krótsza przyprostokątna: {przypkr}, dłuższa przyprostokątna: {przypdl} √{przypdl*przypdl}') find(dl) def obw(): print(f'Obwód równa się: {przec + przypkr + przypdl} lub {przec + przypkr} + √{przypdl*przypdl}') obw()
over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Use simplify del paquete SymPy :

Python env: pip install sympy

Anaconda env: conda install sympy

 import sympy as sp expr = sp.sqrt(243) print(sp.simplify(expr))

Producción:

 9*sqrt(3)
over 4 years ago · Santiago Trujillo Denunciar

0

La forma en que pensé en esto es que podemos eliminar recursivamente factores cuadrados de la raíz.

p.ej

 243 / \ 3^2 27 / \ 3^2 3

El resultado final a la derecha (es decir, 3) será la raíz simplificada, ya que eliminamos todos los factores cuadrados. Los números de la izquierda (3 * 3 == 9) serán los que le saquemos de raíz.

Primero, necesitamos una forma de saber si un número es cuadrado. De otra pregunta :

 import math def is_square(i: int) -> bool: return i == math.isqrt(i) ** 2

A continuación, necesitamos poder determinar los factores de un número. Reuní algo rudimentario aquí, aunque ciertamente se puede hacer más eficiente (mejores ejemplos aquí ):

 def factors(i: int) -> list[int]: factors = [] for number in range(1, i + 1): if i % number == 0: factors.append(number) return factors

Ahora, podemos generar los factores de un número que son cuadrados:

 >>> [a for a in factors(20) if is_square(a)] [1, 4]

Poniendo todo esto junto, podemos generar el número fuera de la raíz cuadrada. Nuestro caso base es cuando la raíz ya está simplificada. Esto significa que su único factor cuadrado es 1.

De lo contrario, generamos cuál debería ser el número exterior después de eliminar un factor, y seguimos repitiendo este proceso.

 def outside(i: int) -> int: square_factors = [a for a in factors(i) if is_square(a)] # Factors are sorted in increasing order. # Therefore, take any factor that's not 1 factor = square_factors[-1] if factor == 1: return 1 # Double slash usage eg 7.0 => 7. Could alternatively use int return int(math.sqrt(factor) * outside(i // factor)) >>> outside(243) 9 # 9 root 3 >>> outside(20) 2 # 2 root 5

Finalmente, necesitamos generar el número dentro de la raíz. por ejemplo, si su número exterior es 3, dividimos el número original por 3^2 == 9 para obtener la raíz simplificada.

 def inside(i: int) -> int: return i // (outside(i) ** 2) >>> inside(20) >>> 5 # 2 sqrt 5 >>> inside(243) >>> 3 # 9 sqrt 3

Juntando todo esto:

 def simplify(i: int) -> tuple[int, int]: return outside(i), inside(i) >>> simplify(243) (9, 3) # 9 sqrt 3 >>> simplify(10) (1, 10) # 1 sqrt 10 >>> simplify(20) (2, 5) # 2 sqrt 5
over 4 years ago · Santiago Trujillo Denunciar

0

Podrías encontrar la raíz más grande que sea un divisor de tu número y presentar el resto como la parte √xxx:

 def root(N): for r in range(int(N**0.5)+1,1,-1): if N % (r*r) == 0: n = N // (r*r) return str(r) + f"√{n}"*(n>1) return f"√{N}" print(root(50)) # 5√2 print(root(81)) # 9 print(root(96)) # 4√6 print(root(97)) # √97

Por lo general, es mejor separar los cálculos del formato utilizando dos funciones de un solo propósito:

 def unroot(N): # find multiplier and remaining root m,d = 1,2 while d*d<=N: if N % (d*d): d += 1 + d%2 else: m,N = m*d,N//(d*d) return m,N def rootstr(N): # format into a string m,n = unroot(N) return str(m)*(m>1)+f"√{n}"*(n>1) for N in (50,81,96,97): print(f"√{N} =",rootstr(N)) √50 = 5√2 √81 = 9 √96 = 4√6 √97 = √97
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda