📜  √4是有理数还是无理数?(1)

📅  最后修改于: 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