From 71e56bb210579c10524efb437e17c9aa7a59a7c2 Mon Sep 17 00:00:00 2001 From: Mike Koss Date: Thu, 31 Oct 2013 13:08:11 -0700 Subject: [PATCH 1/4] cleanup --- .gitignore | 2 ++ euler1.py~ | 25 ------------------------- euler2.py~ | 9 --------- euler3.py~ | 22 ---------------------- euler4.py~ | 27 --------------------------- 5 files changed, 2 insertions(+), 83 deletions(-) create mode 100644 .gitignore delete mode 100644 euler1.py~ delete mode 100644 euler2.py~ delete mode 100644 euler3.py~ delete mode 100644 euler4.py~ diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f3d74a9 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*.pyc +*~ diff --git a/euler1.py~ b/euler1.py~ deleted file mode 100644 index de30530..0000000 --- a/euler1.py~ +++ /dev/null @@ -1,25 +0,0 @@ -# If we list all the natural numbers below -# 10 that are multiples of 3 or 5, we get -# 3, 5, 6, 9. The sum of these multiples is 23 -# -# Find the sum of all the multiples of 3 or 5 -# below 1000 - -def strat1(x, y, mx): - count = 0 - for i in range(mx): - if (i % x == 0) or (i % y == 0): - count += i - return count - -def strat2(x,y,mx): - def f(n): return not n % x * n % y - return sum(filter(f, range(min(x,y), mx))) - -def strat3(x,y,mx): - return sum([i for i in range(mx) if not i % x * i % y]) - - -print strat1(3,5,1000) -print strat2(3,5,1000) -print strat3(3,5,1000) diff --git a/euler2.py~ b/euler2.py~ deleted file mode 100644 index 6622980..0000000 --- a/euler2.py~ +++ /dev/null @@ -1,9 +0,0 @@ -def strat1(x): - seq = [1,2] - while seq[len(seq)-1]+seq[len(seq)-2] <= x: - seq.append(seq[len(seq)-1]+seq[len(seq)-2]) - return sum([i for i in seq if i % 2 == 0]) - -print strat1(4000000) - - diff --git a/euler3.py~ b/euler3.py~ deleted file mode 100644 index 203ffb6..0000000 --- a/euler3.py~ +++ /dev/null @@ -1,22 +0,0 @@ -def factors(x): - from math import sqrt - from math import ceil - fin = [] - for i in range(2, int(sqrt(x)+1)): - if (x % i == 0): - fin.append(i) - fin.append(x/i) - return sorted(fin) - - - -def primes(x): - fin = [] - for i in range(len(factors(x))): - if(len(factors(factors(x)[i])) == 0): - fin.append(factors(x)[i]) - return fin - - -print factors(500000) -print primes(12512512) diff --git a/euler4.py~ b/euler4.py~ deleted file mode 100644 index 4163250..0000000 --- a/euler4.py~ +++ /dev/null @@ -1,27 +0,0 @@ -def isPal(x): - cs = [] - for i in range(len(str(x))): - if(str(x)[len(str(x))-i-1] != str(x)[i]): - return False - else: - return True - -#print "323: " + str(isPal(323)) -#print "324: " + str(isPal(324)) -#print "32423: " + str(isPal(32423)) -#print "1324231: " + str(isPal(1324231)) - -def biggestPal(): - fin = [] - for i in range(999, 99, -1): - for j in range(999, i-50, -1): - if isPal(i*j): - if (i*j == 906609): - print i - print j - fin.append(i*j) - print sorted(fin) - - - -print biggestPal() From a5397b29cb5ded50781940a8de3378c58679c665 Mon Sep 17 00:00:00 2001 From: Mike Koss Date: Thu, 31 Oct 2013 13:28:20 -0700 Subject: [PATCH 2/4] small cleanup --- euler3.py | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/euler3.py b/euler3.py index b1460e1..eff3138 100644 --- a/euler3.py +++ b/euler3.py @@ -1,21 +1,21 @@ -def factors(x): - from math import sqrt - from math import ceil - fin = [] - for i in range(2, int(sqrt(x)+1)): - if (x % i == 0): - fin.append(i) - fin.append(x/i) - return sorted(fin) +from math import sqrt +def factors(x): + fin = [] + for i in range(2, int(sqrt(x) + 1)): + if (x % i == 0): + fin.append(i) + fin.append(x / i) + return sorted(fin) def primes(x): - fin = [] - for i in range(len(factors(x))): - if(len(factors(factors(x)[i])) == 0): - fin.append(factors(x)[i]) - return fin + fin = [] + facts = factors(x) + for i in range(len(facts)): + if(len(factors(facts[i])) == 0): + fin.append(facts[i]) + return fin print primes(600851475143) From 8daa42823d6a3d45fa96f55824ade2cac0b6eda0 Mon Sep 17 00:00:00 2001 From: Mike Koss Date: Thu, 31 Oct 2013 13:39:31 -0700 Subject: [PATCH 3/4] speedup --- euler3.py | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/euler3.py b/euler3.py index eff3138..8dffd15 100644 --- a/euler3.py +++ b/euler3.py @@ -2,20 +2,21 @@ def factors(x): fin = [] - for i in range(2, int(sqrt(x) + 1)): + i = 2 + while i <= sqrt(x): if (x % i == 0): fin.append(i) - fin.append(x / i) - return sorted(fin) + while (x % i == 0): + x = x / i + i += 1 + if x != 1: + fin.append(x) + return fin def primes(x): - fin = [] - facts = factors(x) - for i in range(len(facts)): - if(len(factors(facts[i])) == 0): - fin.append(facts[i]) - return fin + return factors(x)[-1] +print factors(600851475143) print primes(600851475143) From ef623e742c06cd7b87220838a60eded9a17d07c5 Mon Sep 17 00:00:00 2001 From: Mike Koss Date: Fri, 1 Nov 2013 00:59:58 -0700 Subject: [PATCH 4/4] profile command --- profile | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100755 profile diff --git a/profile b/profile new file mode 100755 index 0000000..a8a3f63 --- /dev/null +++ b/profile @@ -0,0 +1,12 @@ +#!/bin/bash + +if [ "$#" != "1" ]; then + echo "Usage: profile N" + echo " Run the python profiler on eulerN.py." + exit 1 +fi + +FILE=euler${1}.py + +echo Profiling $FILE... +python -m cProfile -s cumulative $FILE