Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

295
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda