如何在python中將√243更改為9√3?以及一般如何改變平方根?

世界語博士

我有一個數學/python 問題,如何將平方根中的大數更改為小數(但仍保留該值),例如 √243 到 9√3?

我還有另一個問題,如何在我的代碼中使用它?

代碼:

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()
頭髮

我的想法是我們可以遞歸地從根中刪除平方因子。

例如

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

右邊的最終結果(即 3)將是簡化的根,因為我們已經刪除了所有平方因子。左邊的數字 (3 * 3 == 9) 將是我們取出根的數字。

首先,我們需要一種判斷一個數是否為平方數的方法。另一個問題

import math

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

接下來,我們需要能夠確定一個數的因數。我在這裡整理了一些基本的東西,儘管它當然可以提高效率(這裡有更好的例子):

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

現在,我們可以生成平方數的因數:

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

將所有這些放在一起,我們可以生成平方根之外的數字。我們的基本情況是根已經被簡化。這意味著它唯一的平方因子是 1。

否則,我們在去除一個因素後生成外面的數字應該是什麼,我們不斷重複這個過程。

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 e.g. 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

最後,我們需要生成根內的數字。例如,如果它的外數是 3,我們將原始數除以 3^2 == 9 得到簡化根。

def inside(i: int) -> int:
    return i // (outside(i) ** 2)

>>> inside(20)
>>> 5  # 2 sqrt 5

>>> inside(243)
>>> 3  # 9 sqrt 3

把這一切放在一起:

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章