Rare numbers: Difference between revisions

Content added Content deleted
(Add Rust implementation)
(added simple python implementation. will work on more complex python version next.)
Line 4,038: Line 4,038:
15 10:42
15 10:42
</pre>
</pre>

=={{header|Python}}==
===naive===
A simple implementation, just to show how elegant python can be. Searches up to 10^11 in about 3hours w/ pypy on my Intel Core i5.

<lang Python>
# rare.py
# find rare numbers
# by kHz

from math import floor, sqrt
from datetime import datetime

def main():
start = datetime.now()
for i in xrange(1, 10 ** 11):
if rare(i):
print "found a rare:", i
end = datetime.now()
print "time elapsed:", end - start

def is_square(n):
s = floor(sqrt(n + 0.5))
return s * s == n

def reverse(n):
return int(str(n)[::-1])

def is_palindrome(n):
return n == reverse(n)

def rare(n):
r = reverse(n)
return (
not is_palindrome(n) and
n > r and
is_square(n+r) and is_square(n-r)
)

if __name__ == '__main__':
main()

</lang>



=={{header|Quackery}}==
=={{header|Quackery}}==