如何在 python 中将 50 的平方根显示为 5√2

How to display square root if 50 as 5√2 in python

我正在编写一个程序来输出 python 中数字的平方根。我当前的代码如下:

import math
num = int(input("Enter the number for which you want the square root"))

if math.floor(math.sqrt(num)) == math.ceil(math.sqrt(num)):
    v = math.sqrt(num)
    print(f"The given number is perfect square and the square root is {v} ")
elif num <0:
    print("The square root of the given number is imaginary")
else:
    print(f"The square root of the given number is \u221A{num}") 
    #\u221A is unicode for square root symbol

我当前的程序检查输入的数字是否是完全平方然后显示平方根。如果它不是一个完美的正方形,它只显示√num。例如num为300,则显示√300。但我希望它显示为 10√3。关于我该怎么做的任何想法。我不希望结果中有任何小数。

您可以使用 sympy:

import sympy
sympy.init_printing(use_unicode=True)
sympy.sqrt(300)

输出:

10√3

你可以找到你的数的约数的最大根,并将余数表示为√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