Rút gọn phân số bằng python

Mọi người xem code thế này được chưa ạ và giúp em chinh lại code với ạ
Em rất cảm ơn mọi người
Code:

a = int(input("nhập a: "))
b =int(input("nhập b: "))
def rutgonps(a,b):
    if a>b :
      for i in range(2, b+1):
       if a%i == 0 & b % i == 0:
         print(p = a/i)
         print(q = b/i)
    else:
      for i in range(2, a+1):
       if a%i == 0 & b % i == 0:
         print(p = a/i)
         print(q = b/i)

Bạn nhớ dùng markdown cho code dễ nhìn nhé :smile:


Code thấy chạy thì báo lỗi, còn thuật toán chắc đúng

2 Likes

Hi bạn,

mình cũng mới học python. Có chỗ này thực sự mình không hiểu.

TypeError: ‘q’ is an invalid keyword argumPreformatted textent for this function

Còn về thuật toán. Theo mình bạn nên tìm UCLN của a và b trước. Rồi chia cả A và B cho UCLN đó.

Ngoài ra. vì bạn đang biểu diễn số nguyên (Vì rút gọn phân số chỉ có ý nghĩa trong TH tử và mẫu là số nguyên) nên bạn cần dùng toán tử // thay vì /.

2 Likes

Rất hữu ích >Mình cảm ơn
(Mà đây là mình làm hộ thôi :joy::joy::joy: .Mình chủ yếu về java và php)

def rutgonps(a,b):
    if a>b :
      for i in range(2, b+1):
       if a%i == 0 & b % i == 0:
         return [int(a/i),int(b/i)]
    else:
      for i in range(2, a+1):
       if a%i == 0 & b % i == 0:
         return [int(a/i),int(b/i)]     #<3 mì ăn liền

^ Quá oải :smiley:
math.gcd(first, second) :smiley:

Tay to tí:

while first!=0:
   first, second = (second % first), first
return second
3 Likes

dùng công thức từ/UCLN(tử,mẫu),mẫu/UCLN(tử,mẫu) đó mấy cậu

3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?