Esempio n. 1
0
def sumOfConsectutivePrimes(limit=1000000):
    p.genPrimesESieve(1000000, True)
    i, j = 1, 2
    runningSum, maxPrime = p.primes[i], 0
    result, longest =  runningSum, 1

    for i in xrange(1, len(p.primes)):
        j = i+1
        count = 1
        runningSum = p.primes[i]
        if runningSum >= 40:
            break
        curLongest, curMaxPrime = 2, 0
        while runningSum+p.primes[j] < limit:
            count +=1
            runningSum += p.primes[j]
            if p.isPrime(runningSum):
                curLongest = count
                curMaxPrime = runningSum
            j += 1
        if curLongest >= longest:
            result = curMaxPrime
            longest = curLongest
            print longest, result

    return longest, result
Esempio n. 2
0
def coefficientProducts(a=1000, b=1000):
    aMax, bMax, nMax = (0, 0, 0);
    for a in xrange(-1000, 1001): 
        for b in xrange(-1000, 1001):
            n = 0
            while p.isPrime(abs(n*n + a*n + b)):
                n += 1
            if (n > nMax):
                aMax = a
                bMax = b
                nMax = n
    return aMax*bMax
Esempio n. 3
0
def coefficientProducts2():
    aMax, bMax, nMax = (0, 0, 0)
    for a in xrange(-999, 1001, 2):
        key = 1
        while p.primes[key] <= 1000:
            for sign in (1, -1):
                n = 0;
                offset = -1 if p.primes[key]%2 == 0 else 0 # Making a even if b is even
                while p.isPrime(abs(n*n + (a+offset)*n + sign*p.primes[key])):
                    n += 1
                if (n > nMax):
                    aMax = a;
                    bMax = p.primes[key];
                    nMax = n;
            key += 1
    return aMax*bMax, nMax
Esempio n. 4
0
def truncatablePrime(n, leftToRight=True):
    '''Returns if all numbers of length ≤ 1 are also prime.
       leftToRight flag determines in which direction the new number
       is built up from.
    '''
    n = str(n)
    if not leftToRight:
        n = n[::-1]
    newNumber = ''
    for i in xrange(len(n)-1):
        if leftToRight:
            newNumber += n[i]
        else:
            newNumber = n[i] + newNumber
        if not p.isPrime(int(newNumber)):
            return False
    return True