summaryrefslogtreecommitdiff
path: root/day1/exercise/amicable.py
diff options
context:
space:
mode:
authorPuneeth Chaganti2009-10-12 12:09:16 +0530
committerPuneeth Chaganti2009-10-12 12:09:16 +0530
commitc943ce2f94141e0449e8e94de486f281453eb5bf (patch)
treeb7cd7aadd32cc058435c9b93e5daa453dd62da92 /day1/exercise/amicable.py
parent163eb47568e337cfaf6260f3e9e97badf2467609 (diff)
parent90327591260622d4569b2dfa860d019109301288 (diff)
downloadworkshops-more-scipy-c943ce2f94141e0449e8e94de486f281453eb5bf.tar.gz
workshops-more-scipy-c943ce2f94141e0449e8e94de486f281453eb5bf.tar.bz2
workshops-more-scipy-c943ce2f94141e0449e8e94de486f281453eb5bf.zip
Merged with mainline.
Diffstat (limited to 'day1/exercise/amicable.py')
-rw-r--r--day1/exercise/amicable.py29
1 files changed, 18 insertions, 11 deletions
diff --git a/day1/exercise/amicable.py b/day1/exercise/amicable.py
index 0986e33..c9aea71 100644
--- a/day1/exercise/amicable.py
+++ b/day1/exercise/amicable.py
@@ -1,18 +1,25 @@
-import math
+def is_perfect_square(n):
+ i = 1
+ while i * i < n:
+ i += 1
+ return i * i == n, i
def aliquot(n):
- sum = 0
- for i in range(1, int(math.sqrt(n))+1):
+ sum = 1
+ i = 2
+
+ is_ps, root = is_perfect_square(n)
+ while i < root:
if n % i == 0:
- sum += i + n/i
+ sum += i + (n / i)
+ i += 1
return sum
amicable = []
-for n in range(10000, 100000):
- m = aliquot(n)
- if aliquot(m) == n:
- amicable.append((m, n))
-print amicable
-
-# please please please profile this.
+n = 1000
+while n < 10000:
+ m = aliquot(n)
+ if m > n and aliquot(m) == n:
+ print m, n
+ n += 1