September Morn Update

This commit is contained in:
Ingy döt Net 2019-09-12 10:33:56 -07:00
parent 4e2d22a71d
commit aac6731f2c
6856 changed files with 141342 additions and 21127 deletions

View file

@ -1 +1,6 @@
perf = lambda n: n == sum(i for i in xrange(1, n) if n % i == 0)
def perf(n):
return n == sum(i for i in range(1, n) if n % i == 0)
print (
list(filter(perf, range(1, 10001)))
)

View file

@ -0,0 +1,35 @@
'''Perfect numbers'''
from math import sqrt
# perfect :: Int - > Bool
def perfect(n):
'''Is n the sum of its proper divisors other than 1 ?'''
root = sqrt(n)
lows = [x for x in enumFromTo(2)(int(root)) if 0 == (n % x)]
return 1 < n and (
n == 1 + sum(lows + [n / x for x in lows if root != x])
)
# main :: IO ()
def main():
'''Test'''
print([
x for x in enumFromTo(1)(10000) if perfect(x)
])
# GENERIC -------------------------------------------------
# enumFromTo :: (Int, Int) -> [Int]
def enumFromTo(m):
'''Integer enumeration from m to n.'''
return lambda n: list(range(m, 1 + n))
if __name__ == '__main__':
main()