Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

289
Views
¿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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!