( geza42 | 2021. 04. 16., p – 20:01 )

Nem csak a futási sebesség miatt nem annyira jó ez a megoldás. De nem is annyira robosztus, valszeg egy csomó corner case-t nem kezel le helyesen (mi van, ha a bemeneten ez-az 0, vagy épp nagyon nagy/nagyon pici szám, overflow/underflow lehet, stb.). Az eredeti kód ebből a szempontból jobb, csak az meg túl van bonyolítva. Valszeg felesleges az lnko bele, elég lenne csak a 2-s faktorokat kiütni (ami ugye csak bitművelet a sok osztás helyett). Ill., a sok speciális eset kezelése se biztos, hogy kell bele. Valószínűleg meg lehet fogalmazni egyszerűbben. De amúgy tényleg jól rávilágít arra, hogy egy ilyen egyszerűbb matek problémához is kell megfelelő tudás jól lekódolni. De mondjuk ez szinte minden floating point-os rutinra igaz. Még egy egyszerű másodfokú megoldóképletnél is észnél kell lenni, ha robosztus rutint akar az ember írni.