首先确保
b
这不是消极的。如果是,翻转两个标志。然后使用
abs(a)
在
range
.
你的代码也应该初始化
gcf
为1,因为循环可能不会进行迭代(即
a
是0)。就像那时一样
gcf
已经是1了,你最好从2开始循环。
另外,不要在这样的函数中执行I/O;始终将I/O与算法逻辑分开。执行功能之外的I/O任务。
以下是它的工作原理:
def fraction(a, b):
if b < 0:
a = -a
b = -b
gcf = 1
for i in range(2, min(abs(a), b) + 1):
if a % i == 0 and b % i == 0:
gcf = i
return a//gcf, b//gcf
a = int(input("Enter the value of a "))
b = int(input("Enter the value of b "))
a, b = fraction(a, b)
print(a, "/", b)
请注意,有
more efficient algorithms
获得最大公约数。