leonadavinci
2009-05-19 16:54:20 UTC
Hello,
I have created this code that generates Perfect Numbers in python. I
decided to learn Haskell so I would like to see if Haskel can create
more easily the same program. In addition how can I measure time in
Haskell. In python I have the timeit function which measure my code
for 9.6 seconds when n=9000.
Code follows:
def isdivisor(x,y):
if y!=0:
s=x%y
if s==0:
return True
else:
return False
else:
raise ZeroDivisionError
def isdivisableby2(x):
if x%2 == 0:
return True
else: return False
class perfectGenerator:
def __init__(self,n):
self.pinakas=list(range(1,n))
def sumdivisors(self,x):
return sum([_ for _ in self.pinakas[0:x-1] if isdivisor(x,_)])
def isPerfect(self,x):
if isdivisableby2(x) and self.sumdivisors(x)==x:
return True
else: return False
def generatePerfect(self):
return [x for x in self.pinakas if self.isPerfect(x)]
I have created this code that generates Perfect Numbers in python. I
decided to learn Haskell so I would like to see if Haskel can create
more easily the same program. In addition how can I measure time in
Haskell. In python I have the timeit function which measure my code
for 9.6 seconds when n=9000.
Code follows:
def isdivisor(x,y):
if y!=0:
s=x%y
if s==0:
return True
else:
return False
else:
raise ZeroDivisionError
def isdivisableby2(x):
if x%2 == 0:
return True
else: return False
class perfectGenerator:
def __init__(self,n):
self.pinakas=list(range(1,n))
def sumdivisors(self,x):
return sum([_ for _ in self.pinakas[0:x-1] if isdivisor(x,_)])
def isPerfect(self,x):
if isdivisableby2(x) and self.sumdivisors(x)==x:
return True
else: return False
def generatePerfect(self):
return [x for x in self.pinakas if self.isPerfect(x)]