September Morn Update
This commit is contained in:
parent
4e2d22a71d
commit
aac6731f2c
6856 changed files with 141342 additions and 21127 deletions
|
|
@ -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)))
|
||||
)
|
||||
|
|
|
|||
35
Task/Perfect-numbers/Python/perfect-numbers-3.py
Normal file
35
Task/Perfect-numbers/Python/perfect-numbers-3.py
Normal 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()
|
||||
Loading…
Add table
Add a link
Reference in a new issue