Một chút toán học:
1, Tìm nghiệm 1 cách xấu xí:
tuy nhiên, khỏi cần search cũng dễ dàng suy ra 
Loại bớt các khả năng không phù hợp với điều kiện, ta chỉ còn khả năng a >= 1, b != 1/a, c = (a+b) / (ab - 1)
Vì vai trò của a, b, c như nhau nên nếu 1 số bằng 0 thì 2 số còn lại sẽ là đối của nhau -> không được. Do vậy, a, b, c đều lớn hơn 0 hết.
2, c là số nguyên -> c = (a+b) / (ab - 1)
là số nguyên. Chưa nói đến tính chia hết, để c nguyên được thì a + b >= ab - 1
đã.
Biến đổi tương đương
(a+b) >= (ab - 1)
<=> ab - a - b - 1 <= 0
<=> (a - 1)(b - 1) <= 2
Vì a, b đều nguyên -> (a - 1), (b - 1) nguyên -> vế trái nguyên. Theo a, b, c > 0
-> a, b, c >= 1
-> vế trái >= 0. Xảy ra 3 trường hợp:
-
(a - 1)(b - 1) = 0
-> a = b = 1 -> loại vì b phải khác 1/a.
-
(a - 1)(b - 1) = 1 -> a - 1 = b - 1 = 1 -> a = b = 2 -> c = (2 + 2) / (2*2 - 1) = 4/3
,
, loại.
-
(a - 1)(b - 1) = 2 ->
-
a - 1 = 1, b - 1 = 2 -> a = 2, b = 3 -> c = (2 + 3) / (2*3 - 1) = 1
,
.
-
a - 1 = 2, b - 1 = 1 -> a = 3, b = 2 -> c = (3 + 2) / (3*2 - 1) = 1
,
.
-> 2 bộ nghiệm rút ra được là (2, 3, 1) hoặc (3, 2, 1), tuy nhiên vai trò của a, b, c như nhau nên (a, b, c) thuộc { hoán vị của (1, 2, 3) }
Code:
print(123, 213, ...) # in hết hoán vị bằng tay chứ code gì nữa cho mệt