# [pypy-issue] Issue #1878: cPython and PyPy produce different results when run on the same code (pypy/pypy)

Sat Oct 4 18:58:26 CEST 2014

```New issue 1878: cPython and PyPy produce different results when run on the same code
https://bitbucket.org/pypy/pypy/issue/1878/cpython-and-pypy-produce-different-results

Ran Gutin:

This is my solution to Project Euler problem 95.

```
#!python
import time

def euler95():
def chainLength(i):
start = i
sofar = set()

length = 0
while i not in sofar and i <= 10**6:
sofar = sofar.union({i})
#print(sofar)
i = sums[i]
length += 1

if i == start:
return length
return 0

sums = [sum(factors) for factors in factorsOfEverythingBelow(10**6+1)]

print("found sums")
return max(range(10**6), key = chainLength)

def factorsOfEverythingBelow(n):
factors = []
for i in range(n): factors += [[1]]
for i in range(2,n):
for j in range(i+i,n,i):
factors[j] += [i]
return factors

def euler(n, f):
begin = time.time()
print("Euler",n,":",f(),"in",time.time()-begin,"seconds")
```

Start the program with:

```
#!python

euler(95,euler95)
```

CPython prints out:

found sums
Euler 95 : 14316 in 19.938631057739258 seconds

PyPy prints out:

found sums
Euler 95 : 1 in 6.321170806884766 seconds

CPython gives the right answer to https://projecteuler.net/problem=62 and PyPy gives the wrong answer.

Given another Project Euler problem:

```
#!python

def period_sqrt(n):
if float(sqrt(n)).is_integer():
return 0
m = 0
d = 1
a = int(n**0.5)
a0 = a

mdset = set()

period = 0
while True:
m = d*a - m
d = (n - m**2)/d
a = int((a0 + m)/d)
if (m,d) in mdset:
return period
mdset = mdset.union({(int(m),int(d))})
period += 1

def euler64():
return sum(1 for i in range(1,10**4+1) if period_sqrt(i) % 2 == 1)
```

Both CPython and PyPy give the right result.

```