def lrTruncPrime( n ): """Is n both left-trunc and right trunc prime? >>> from euler37 import lrTruncPrime >>> lrTruncPrime(3797) True >>> lrTruncPrime(997) False """ lt= all( isprime(t) for t in leftTrunc(n) ) rt= all( isprime(t) for t in rightTrunc(n) ) return lt and rt
def answer(): bList = [ b for b in range(2,1000) if isprime(b) ] #print bList maxPList= [] maxPArgs= None for a in range(0,1000): for b in bList: for sa, sb in ( (a,b), (-a,b), (a,-b), (-a,-b) ): pList= list(primeFunc(sa,sb)) if len(pList) > len(maxPList): maxPList= pList maxPArgs= (sa, sb) return maxPArgs
def circularPrimes( limit ): """ >>> from euler35 import circularPrimes >>> cp100= circularPrimes( 100 ) >>> len(cp100) 13 >>> sorted( set( cp100 ) ) [2, 3, 5, 7, 11, 13, 17, 31, 37, 71, 73, 79, 97] """ cp= set() for n in range(2,limit): if isprime(n) and n not in cp: rs= [ number(r) for r in rotations( digits(n) ) ] circular= all( map( isprime, rs ) ) if circular: for r in rs: cp.add(r) return cp
def primeFunc( a, b ): """Generate primes using :math:`n^2 + an + b` For all values of n between 0 and max(abs(a),abs(b)). >>> from euler27 import primeFunc >>> e1= list(primeFunc(1,41)) # n^2+n+41 >>> len(e1) 40 >>> e2= list(primeFunc(-79,1601)) # n^2-79n+1601 >>> len(e2) 80 """ for n in range(max(abs(a),abs(b))): x= n*n+a*n+b if x > 0 and isprime(x): yield x else: break
def pandigitalPrimes(size): """Generate all pan-digital primes of a given size. >>> from euler41 import pandigitalPrimes >>> pd4 = list( pandigitalPrimes(4) ) >>> 2143 in pd4 True >>> pd4 [1423, 2143, 2341, 4231] """ permN= Permutation( range(1,size+1) ) for p in permN.nextPerm(): ld= p[-1] if ld % 2 == 0: continue # skip even numbers if ld == 5: continue # skip 5's, also n= number( p ) if isprime(n): yield n
def big_prime( stop=1000000 ): """Largest prime less than the given number or 1.""" while stop != 1 and not isprime(stop): stop= stop-1 return stop
def is_prime( n ): if n not in memoized: memoized[n]= isprime( n ) return memoized[n]