Rare numbers: Difference between revisions

added simple python implementation. will work on more complex python version next.
(Add Rust implementation)
(added simple python implementation. will work on more complex python version next.)
Line 4,038:
15 10:42
</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}}==
Anonymous user