Python 埃及分数循环

Python loop for egyptian fractions

所以我做了一个 python3 程序,给出了正常分数的埃及分数。

fraction = (int(input())/int(input()))

i = 1
while True:
    if fraction > (1/i):
        print(i)
        fraction = fraction - (1/i)
    i += 1

当然现在可以了,但是循环永远不会结束, 我该怎么做才能结束它?

我想到了一些办法,但这行不通。

if fraction.numerator == 1:
   break

我有三个建议。

  • 使用 fractions 模块,因为浮点数不会给出您需要的准确精度。
  • 让你的 while 循环在分数为零时终止。
  • 将您的 if 条件更改为“>=”而不是“>”。

from fractions import Fraction

f = Fraction(int(input()), int(input()))

i = 1
while f > 0:
    if f >= Fraction(1,i):
        print(i)
        f -= Fraction(1,i)
    i += 1