# [Edu-sig] Brute force solutions

urnerk@qwest.net urnerk at qwest.net
Sun Sep 25 00:03:27 CEST 2005

```>The fun part here is we can use numerator/denominator syntax with
open-ended
>precision integers, to like express sqrt of 19 as some humongous fraction
>(as many digits as memory will allow).  This lets us far surpass the
>floating point barrier.

For example, the sqrt of 19 is rougly:

745969084203762918506900171
6630770611758990188906918072
4013315460866431392624885605
5112125808098871177881508095
4010864598095
----------------------------
1711370448973571545640915466
3001505416992487326376156603
4301985589644920244770721090
4993017822174818974832607428
966608330904

(that's a numerator over a denominator).

Here's the code behind it (still need to replace int(pow(x,0.5))
with a numerical method that doesn't do all the work to find
an actual floating point sqrt -- overkill):

"""
gonzo.py
"""
from mathteach import cf2
# http://www.4dsolutions.net/ocn/python/mathteach.py

def sqrtcf(n):
orig = n
denom = 1
cflist = []
while True:
m = int(pow(n,0.5)) # <-- replace with function call
cflist.append(m)
if len(cflist)>1 and denom == 1:
break
return cflist

def getsqrt(n,default=30):
thelist = sqrtcf(n)
while len(thelist)<default:
thelist += thelist[1:]
thelist = thelist[:default]
return cf2(thelist * 10)

>>> from gonzo import getsqrt
>>> getsqrt(19)
...

Kirby

_______________________
Edu-sig mailing list
Edu-sig at python.org
http://mail.python.org/mailman/listinfo/edu-sig

--------------------------------------------------------------------
mail2web - Check your email from the web at
http://mail2web.com/ .

```