求解最大公因数
def mous(maxn, minn):maxn = max(abs(maxn),abs(minn))
minn = min(abs(maxn),abs(minn))
while True:
ifmaxn // minn == maxn /minn:
return minn
break
else:
minn = maxn % minn
class fenshu():
def __init__(self,nem , den):
self.nem = nem
self.den = den
if self.den < 0:
self.nem = -nem
self.den = -den
self.nem = self.nem / mous(self.nem,self.den)
self.den = self.den / mous(self.nem, self.den)
def __str__(self):
return str(self.nem) + "/"+str(self.den)
def __add__(self, other):
result_den = self.den * other.den
result_nem = self.nem * other.den + other.nem * self.den
result_den = result_den / mous(max(result_den, result_nem), min(result_den, result_nem))
result_nem = result_nem / mous(max(result_den, result_nem), min(result_den, result_nem))
return str(result_nem) + "/" + str(result_den)
def __sub__(self, other):
result_den = self.den * other.den
result_nem = self.nem * other.den - other.nem * self.den
result_den = result_den / mous(max(result_den, result_nem), min(result_den, result_nem))
result_nem = result_nem / mous(max(result_den, result_nem), min(result_den, result_nem))
return str(result_nem) + "/" + str(result_den)
def __eq__(self, other):
self.result =self.nem * other.den
other.result = other.nem* self.den
if self.result == other.result:
print("good")
else:
print("wrong")
def get_den(self):
print(self.den)
def get_nem(self):
print(self.nem)
a = fenshu(-4,8)
print(a)
问一下为什么打印结果是-0.5/1.0
而不是-1/2.0 在代码中, mous 函数用于计算两个数的最大公因数。然后,在 fenshu 类的构造函数中,通过调用 mous 函数来将分子和分母进行约分。这样做是为了确保分数被化简为最简形式。
在打印结果时,我们可以看到 a 对象的分子为-0.5,分母为1.0。这是因为在构造函数中,我们将分子和分母分别除以它们的最大公因数来进行约分。在这种情况下,-4和8的最大公因数为4,所以分子-4除以4得到-1,分母8除以4得到2。因此,打印结果是-1/2.0。
如果你希望打印结果是整数形式的分数,你可以对打印结果进行处理,将分母为1的情况特殊处理,例如将分子和分母都转换为整数类型,并判断分母是否为1,如果是,则只打印分子部分。以下是修改后的代码示例:
class fenshu():
def __init__(self,nem , den):
self.nem = nem
self.den = den
if self.den < 0:
self.nem = -nem
self.den = -den
gcd = mous(self.nem, self.den)
self.nem = int(self.nem / gcd)
self.den = int(self.den / gcd)
def __str__(self):
if self.den == 1:
return str(self.nem)
else:
return str(self.nem) + "/" + str(self.den)
a = fenshu(-4, 8)
print(a)
这样修改后,打印结果将是 -1/2 。 单打印结果是-0.5/1.0{:9_224:}
页:
[1]