先上程序
n = int(input())
m = int(n**(1/2)) #int整数化一个根号外的范围
k = int(n/m/m) #k为根号内的值
while m >= 1:
if m*m*k == n:
break
m = m-1
k = int(n/m/m) #用while循环从大到小选出合适的m,n
if k == 1:
print(m)
elif m == 1:
print(f"根号{n}")
else:
print(f"{m}倍的根号{k}") #分情况输出
思路
根号化简就是让被开根号数变成m*m*k的形式,m,k分别是根号内外的数,且m的值一定不大于开根号得出来的真实值。用while循环,如果能有m*m*k=n,则m,k刚好为根号内外的值,如果不符合,就让m-1继续实验。(例如根号12,先会得到m=3,k=1,显然m*m*k=n不成立,这样m就会自动-1变成2,k变为3,m*m*k=n成立,输出。)得到m,n后,分刚好化简为整数,没法化简,根号内外都有数值三种情况分别输出。
运行结果
12
2倍的根号3
进程已结束,退出代码0
请大家多多关照
谢谢阅读