📅  最后修改于: 2023-12-03 15:35:51.603000             🧑  作者: Mango
这是一个判断4
的平方根是否为有理数的程序。该程序将判断4
的平方根是否为有理数,并返回判断结果。如果判断结果为有理数,程序将返回True
,否则返回False
。
import math
def is_rational(num):
"""
判断一个数的平方根是否是有理数
:param num: 待判断的数
:return: True表示是有理数,False表示不是有理数
"""
# 取出平方根
sqrt_num = math.sqrt(num)
# 判断平方根是否为整数
if sqrt_num == int(sqrt_num):
return True
# 判断平方根是否是无限不循环小数
str_num = str(sqrt_num)
if len(str_num.split('.')[-1]) > 10:
return False
# 将平方根转化为分数形式判断是否为有理数
frac_num = frac(sqrt_num)
return frac_num[1] != 0
def gcd(a, b):
"""
辗转相除法求最大公约数
"""
while(b):
a, b = b, a % b
return a
def frac(num):
"""
将浮点数转化为分数形式
:param num: 待转化的浮点数
:return: 分数形式的元组,第一个元素是分子,第二个元素是分母
"""
# 分母初始值
denom = 1
# 通过增大分母来逼近浮点数
while abs(round(num * denom) - num * denom) > 0.0000000001:
denom += 1
# 逆序对分子进行约分,得到最简分数
numerator = round(num * denom)
divisor = gcd(numerator, denom)
numerator //= divisor
denom //= divisor
return (numerator, denom)
# 判断4的平方根是否是有理数
is_rational(4) # True
程序判断4
的平方根是一个有理数,因此返回True
。