Öncelikle çözümümde $(a,b,c)$ ile $(b,a,c)$ üçgenlerini aynı aldığımı belirteyim. Çözümü belli bir yere kadar getirdikten sonra genel formülü göstermek zor geldi. Yine de geldiğim yere kadar olan kısmı ve çözüm sayısı için yazdığım kodu ekledim.
Pisagor üçlülerinden $m,n,k\in\mathbb{Z}^+$ olmak üzere, $(m,n)=1$, $m>n$ ve $m$ ve $n$'den biri çift, diğeri tek olsun. Üçgenin kenarları, $c$ hipotenüs olmak üzere $(a,b,c)=(k(m^2-n^2),2kmn, k(m^2+n^2))$ formatındadır. İç teğet çemberi çizip, basit bir işlemle $2r=a+b-c$ olacağını görebiliriz. Dolayısıyla, $$r=k(mn-n^2)=kn(m-n)$$ olacaktır. $r$'yi üç sayının çarpımı olarak yazmalıyız. Eğer $r=d_1d_2d_3$ olarak yazarsak, $(k,m,n)=(d_1,d_2+d_3,d_2)$ olacaktır. Buradan $d_2$ ve $d_3$'ün aralarında asal olması gerektiğini ve $d_3$'ün tek olması gerektiğini elde ederiz.
Son bulgu üzerinden bir Python kodu yazarsak,
import math
def gcd(a, b):
while b != 0:
a, b = b, a % b
return a
def coprime(a, b):
return gcd(a, b) == 1
def divisors(n):
divs = [1]
for i in range(2,int(math.sqrt(n))+1):
if n%i == 0:
divs.extend([i,int(n/i)])
divs.extend([n])
divs.sort()
divs = list(dict.fromkeys(divs))
return divs
def solutions(r):
count=0
for k in divisors(r):
for n in divisors(int(r/k)):
if coprime(n,int(r/(k*n))) and (int(r/(k*n)))%2==1:
count+=1
return count
print(solutions(18))
Kodun sonucunda deneme yaparsak sonucun genel bir formattan ziyade, $2$ asalına göre değiştiğine ulaşıyoruz. Bu yüzden $r=2^ap_1^{n_1}p_2^{n_2}\cdots p_k^{n_k}$ olarak yazalım ($a\geq 0$, $n_i\geq 1$, $p_i$'ler farklı tek asallar). Bu şekilde çarpanlarına ayrılırsa, çözüm sayısı $(a+1)(2n_1+1)(2n_2+1)\cdots(2n_k+1)$ olarak bulunur. Bu formülden ayrıca $r=1$ olan tek üçgen olduğunu görebiliriz ki bu üçgen de $(3,4,5)$ üçgenidir.