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 index b1460e1..8dffd15 100644 --- a/euler3.py +++ b/euler3.py @@ -1,21 +1,22 @@ -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 = [] + i = 2 + while i <= sqrt(x): + if (x % i == 0): + fin.append(i) + while (x % i == 0): + x = x / i + i += 1 + if x != 1: + fin.append(x) + return 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 + return factors(x)[-1] +print factors(600851475143) print primes(600851475143) 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() 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