# HG changeset patch # User Dominic Cleal # Date 1228129103 0 # Node ID b94533a8c529aaec08fbdd05f68b634e8adc4ae5 # Parent 1ca695e32f66ac93c323493b07adadb23cd712bf# Parent fa152d695acd41466b60ea38c7599df916fe729a Merging two branches diff -r 1ca695e32f66 -r b94533a8c529 problem19.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/problem19.py Mon Dec 01 10:58:23 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 1ca695e32f66 -r b94533a8c529 problem25.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/problem25.py Mon Dec 01 10:58:23 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 1ca695e32f66 -r b94533a8c529 problem27.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/problem27.py Mon Dec 01 10:58:23 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 1ca695e32f66 -r b94533a8c529 problem29.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/problem29.py Mon Dec 01 10:58:23 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 1ca695e32f66 -r b94533a8c529 problem30.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/problem30.py Mon Dec 01 10:58:23 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 1ca695e32f66 -r b94533a8c529 problem49.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/problem49.py Mon Dec 01 10:58:23 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 1ca695e32f66 -r b94533a8c529 problem50.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/problem50.py Mon Dec 01 10:58:23 2008 +0000 @@ -0,0 +1,35 @@ +import math + +def count(i, min): + for a in range(0, len(p) - min): + t = 0 + for b in range(a, len(p)): + t += p[b] + if t == i: + return b - a + 1 + if t > i: + break + return False + +cmax = 0 +imax = 0 +p = [ 2 ] +i = 3 +while i < 1000: + 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, cmax) + if not c == False and c > cmax: + cmax = c + imax = i + print "New max %d with %d conseq" % (i, c) + i += 2 +