for i in xrange(1, len(digits)): a = EulerUtils.getNumFromDigits(digits[:i]) b = EulerUtils.getNumFromDigits(digits[i:]) # print "%s:" % num if isPrime(a) and isPrime(b): if isPrime( EulerUtils.concat(b,a) ): # print "\t%s, %s" % (a,b) pair = tuple(sorted((a,b))) if not pair in pairs: #sortedList.sorted_add(pairs, pair) pairs.append(pair) #print """ num = 7109 can_split_into_primes(num) """ def main(): for num in primes: can_split_into_primes(num) print len(pairs) if __name__ == '__main__': print EulerUtils.timeit(main) """ for a in xrange(len(primes)): for b in xrange(a+1, len(primes)): for c in xrange(b+1, len(primes)): for d in xrange(c+1, len(primes)): print primes[a], primes[b], primes[c], primes[d] """
import EulerUtils def buildFactTable(size): factTable = [1,1] for n in xrange(2, size): factTable.append(n*factTable[n-1]) return factTable def nCr(n,r,factTable): return factTable[n]/(factTable[r]*factTable[n-r]) def main(size): count = 0 factTable = buildFactTable(size) for n in xrange(1,size): for r in xrange(1,n+1): if nCr(n,r,factTable) > 1e6: count += 1 print "ans =", count if __name__ == '__main__': print "time =", EulerUtils.timeit(main, (101,))[0]