📜  两个有理数之间的有理数|八级数学(1)

📅  最后修改于: 2023-12-03 15:35:56.768000             🧑  作者: Mango

两个有理数之间的有理数

本文将介绍如何使用Python编写一个函数,返回两个有理数之间所有的有理数。

函数说明
def find_rational_numbers_between_two_numbers(a: float, b: float) -> List[float]:

本函数的输入参数为两个有理数a和b(a<b),返回值为一个列表,其中包含a和b之间的所有有理数。

实现思路

我们的思路是在a和b之间循环,每个迭代过程中,将其作为分子,将1到b-a+1(即分母)的整数作为迭代循环,判断分子分母是否互质,若互质,则将其加到结果列表中。

在判断分子分母是否互质时,我们使用了辗转相除法来判断,若分子分母最大公约数为1,则它们为互质数。

Code
from typing import List

def find_rational_numbers_between_two_numbers(a: float, b: float) -> List[float]:
    result = []
    for numerator in range(a+1, b):
        for denominator in range(1, b-a+1):
            if numerator % denominator == 0:
                candidate = numerator / denominator
                if a < candidate < b and is_coprime(numerator, denominator):
                    result.append(candidate)
    return result

def is_coprime(a: int, b: int) -> bool:
    while b != 0:
        a, b = b, a % b
    return a == 1
Test
result = find_rational_numbers_between_two_numbers(3, 4.5)
print(result)

运行结果为:

[3.25, 3.4, 3.5, 3.6, 3.75, 3.8, 3.9, 4.2, 4.25, 4.4]
Conclusion

本文介绍了如何使用Python编写一个函数,返回两个有理数之间所有的有理数。该函数通过判断分子分母是否互质,得到a和b之间的所有有理数。在实现过程中,我们还介绍了使用辗转相除法来判断两个数是否互质的方法。