1 | initial version |

One bottleneck comes from working with the symbolic ring. The following code is some hundred times faster (may be still not fast enough ;-) )

```
import math
def count_2017(bound=100000):
cpt = 0
for n in range (1,bound):
if int(RR(math.sqrt(n)).frac()*10000) == 2017:
cpt += 1
return cpt
```

2 | No.2 Revision |

One bottleneck comes from working with the symbolic ring. The following code is some hundred times faster (may be still not fast enough ;-) )

```
import math
def count_2017(bound=100000):
cpt = 0
for n in range (1,bound):
if int(RR(math.sqrt(n)).frac()*10000) == 2017:
cpt += 1
return cpt
```

Update:
Using `cython`

makes the code another ten times faster, for example:

```
fits_2017 = cython_lambda("double x", "bool(int(10000*(x-int(x))) == 2017)")
f = cython_lambda("int n", "sqrt(n)")
def count_2017(bound=100000):
cpt = 0
for n in range(1,bound):
if fits_2017(f(n)):
cpt += 1
return cpt
count_2017(10^7)
```

Copyright Sage, 2010. Some rights reserved under creative commons license. Content on this site is licensed under a Creative Commons Attribution Share Alike 3.0 license.