Evo da opišem i ja jedan algoritam (koji je verovatno sporiji od svih navedenih).
Neka je
.
Neka nam predikat
označava da li je slučaj problematičan ili ne, tj.
.
Evo ukratko u čemu je ideja - pa ću onda to i formalizovati.
Ako nije
, stvar je gotova - upotrebimo
Farenhajtovu formulu.
Ako jeste
, onda uzmimo da je
, pa mora da važi:
. Brojevi,
i
su susedni članovi
Farey-evog niza
. Sada generišemo jedan međučlan
ako je on upao u interval
našli smo broj koji smo tražili, a ako nije postupak nastavljamo sa međučlanom i jednim od prethodnih (zavisno od toga da li je
ili je
. Jasno je da se algoritam kad tad zaustavlja.
Evo sad isto to samo dosadnije
Radi lakšeg izražavanja posmatrajmo i funkciju
, pri čemu je
.
Neka je
. Stavimo da je
,
i
,
. Pretpostavimo da su već definisani svi brojevi
za
onda:
1. Ako je
tu stajemo - jer je
upravo ono što smo tražili.
2. Ako je
, onda stavimo da je
i
,
.
3. Ako je
, onda stavimo da je
i
,
.
Jasno je da će postupak u najgorem slučaju trajati dok se ne desi da
Ključna stvar je u tome da za susedne članove
Farey-evog niza, pomoću f-je
uvek dobijamo novi (njima susedni) član koji se nalazi između njih a ima
najmanji mogući imenilac.
[Ovu poruku je menjao uranium dana 08.01.2006. u 21:06 GMT+1]
Attempt all the problems. Those you can do, don't do. Do the ones you cannot.