Sisyphus sequence: Difference between revisions

Content added Content deleted
(→‎{{header|Python}}: Extreme stretch)
Line 374: Line 374:
These numbers under 250 occur the most in the first 100,000,000 terms:
These numbers under 250 occur the most in the first 100,000,000 terms:
[28, 14, 7] all occur 7 times.
[28, 14, 7] all occur 7 times.
</pre>

===Extreme stretch===

Using Python bindings for the primesieve C++ library and PyPy 3.9 instead of CPython (PyPy is nearly twice as fast up to s(100,000,000)), this completed in about 1 hour and 53 minutes on a AMD Ryzen 5 1500X. Memory usage was minimal thanks to <code>primesieve.Iterator()</code>.

<syntaxhighlight lang="python">import primesieve

def sisyphus36():
primes = primesieve.Iterator()
n = 1
p = 0
i = 1

while True:
i += 1
if n % 2:
p = primes.next_prime()
n = n + p
else:
n = n // 2

if n == 36:
print(f"{i:,}, {n:,}, {p:,}")
break

if __name__ == "__main__":
sisyphus36()
</syntaxhighlight>

{{out}}
<pre>
$ time pypy3.9 sisyphus_36.py
77,534,485,877, 36, 677,121,348,413

real 113m2.636s
user 112m56.973s
sys 0m0.060s
</pre>
</pre>