Here are my solutions from the last set that I never got around to posting:
Problem 3 – I guess I just printed the list and then took the biggest here.
def divisors(n): divs = set([1]) for i in range(2, int(math.sqrt(n)) + 1): if n % i == 0: divs.add(i) divs.add(n/i) return divs def isPrime(n): return len(divisors(n)) == 1 divs = list(divisors(600851475143)) divs.sort() divs.reverse() for div in divs: if isPrime(div): print div
Problem 4 –
def isPalidrome(num): numstr = str(num) for i in range(len(numstr)): if numstr[i] != numstr[-i-1]: return False return True i = 999 j = 999 prod = i * j biggest = 0 big_i = 0 big_j = 0 while prod > biggest: while prod > biggest: if isPalidrome(prod): biggest = prod big_i = i big_j = j break j -= 1 prod = i * j i -= 1 j = i prod = i * j print "Biggest is: ", big_i, " x ", big_j, " = ", biggest
Problem 5 – Okay, this one is cheap, but Carolyn and I figured out that it was super easy to just count which divisors you needed, so there wasn’t really much coding to do. 🙂
print 20*19*9*17*4*7*13*11
Problem 6 – Hmm. Don’t see where I put the source to this one, so maybe I skipped it. I’ll post it with the solutions to next (i.e. this) week’s problems.
Cheers.
Leave a comment