Example #1
0
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
Example #2
0
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
Example #3
0
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
Example #4
0
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
Example #5
0
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
Example #6
0
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
Example #7
0
def is_prime( n ):
    if n not in memoized:
        memoized[n]= isprime( n )
    return memoized[n]