# HG changeset patch # User Dominic Cleal # Date 1228099456 0 # Node ID 0e08f4decf679abf4453394bd78588d9e241ba02 Adding files from xenon diff -r 000000000000 -r 0e08f4decf67 problem19.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/problem19.py Mon Dec 01 02:44:16 2008 +0000 @@ -0,0 +1,12 @@ +import datetime + +t = 0 +d = datetime.date(1901, 1, 1) +for y in range(1901, 2001): + d = d.replace(year=y) + for m in range(1, 13): + d = d.replace(month=m) + if d.isoweekday() == 7: + t += 1 +print t + diff -r 000000000000 -r 0e08f4decf67 problem25.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/problem25.py Mon Dec 01 02:44:16 2008 +0000 @@ -0,0 +1,7 @@ +fib = [1, 1] +i = 2 +while (len(str(fib[-1])) < 1000): + fib.insert(0, fib.pop() + fib[-1]) + i += 1 +print i + diff -r 000000000000 -r 0e08f4decf67 problem27.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/problem27.py Mon Dec 01 02:44:16 2008 +0000 @@ -0,0 +1,36 @@ +import math + +def test(a, b): + n = 0 + fx = lambda n: n**2 + a*n + b + v = fx(n) + while v > 1 and isprime(v): + n += 1 + v = fx(n) + return n - 1 + +def isprime_int(x): + for t in range(3, int(math.floor(math.sqrt(x)))): + if x % t == 0: + return False + return True + +cache = { } +def isprime(x): + if x % 2 == 0: + return False + if x in cache: + return cache[x] + r = isprime_int(x) + cache[x] = r + return r + +rmx = 0 +for a in range(-999,1000): + for b in range(-999,1000): + r = test(a, b) + if r > rmx: + rmx = r + rcoeff = (a, b) + print "New winner, a=%d, b=%d for %d" % (a, b, r) + diff -r 000000000000 -r 0e08f4decf67 problem29.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/problem29.py Mon Dec 01 02:44:16 2008 +0000 @@ -0,0 +1,5 @@ +l = { } +for a in range(2, 101): + for b in range(2, 101): + l[a**b] = None +print len(l.keys()) diff -r 000000000000 -r 0e08f4decf67 problem30.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/problem30.py Mon Dec 01 02:44:16 2008 +0000 @@ -0,0 +1,5 @@ +t = 0 +for i in xrange(2, 9999999): + if i == sum([int(c)**5 for c in str(i)]): + t += i + print "got %d, total %d" % (i, t) diff -r 000000000000 -r 0e08f4decf67 problem49.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/problem49.py Mon Dec 01 02:44:16 2008 +0000 @@ -0,0 +1,37 @@ +import math + +def same_digits(x, y): + lx = [c for c in str(x)] + lx.sort() + ly = [c for c in str(y)] + ly.sort() + # print "%s ~~ %s" % (lx, ly) + return lx == ly + +def is_prime_int(x): + for t in range(3, int(math.floor(math.sqrt(x)))): + if x % t == 0: + return False + return True + +cache = { } +def is_prime(x): + if x % 2 == 0: + return False + if x in cache: + return cache[x] + r = is_prime_int(x) + cache[x] = r + return r + +for x in range(1000, 9999): + for y in range(1000, 9999): + (a, b, c) = (x, x+y, x+2*y) + if c > 9999: + break + if not is_prime(a) or not is_prime(b) or not is_prime(c): + continue + if not same_digits(a, b) or not same_digits(b, c): + continue + print "a=%d, b=%d, c=%d" % (a, b, c) + diff -r 000000000000 -r 0e08f4decf67 problem50.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/problem50.py Mon Dec 01 02:44:16 2008 +0000 @@ -0,0 +1,34 @@ +import math + +def count(i): + c,t = 0,0 + for x in p: + t += x + c += 1 + if t == i: + return c + if t > i: + return False + +cmax = 0 +imax = 0 +p = [ 2 ] +i = 3 +while i < 1000000: + isp = True + max = int(math.floor(math.sqrt(i))) + for t in p[1:]: + if t > max: + break + if i % t == 0: + isp = False + break + if isp: + p.append(i) + c = count(i) + if not c == False and c > cmax: + cmax = c + imax = i + print "New max %d with %d conseq" % (i, c) + i += 2 +