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}}== |