Ejemplo n.º 1
0
def main(args):

    t = [1]
    for i in range(10):
        t.append(t[-1]*10)

    prime = PrimeNumberPool()

    ts1 = time.time()
    if args.test:
        max_r = t[9]
        for i in range(t[4]*1):
            prime.NewPrime()
    else:
        max_r = t[10]
        for i in range(t[4]*3):
            prime.NewPrime()
    ts2 = time.time()
    logger.debug("prepare primes takes {}s".format(ts2-ts1))

    for i in range(len(prime.numbers)):
        if (i%2==1): continue
        p2 = prime.numbers[i]*prime.numbers[i]
        remainder = 2*(i+1)*prime.numbers[i] % p2
        if (remainder > max_r):
            logger.debug((i+1, prime.numbers[i], remainder))
            break

    answer = i+1
    logger.info("answer: {}".format(answer))
Ejemplo n.º 2
0
def main(args):
    prime = PrimeNumberPool()

    r = 1000
    for i in range(r):
        prime.NewPrime()

    pb = []
    for b in prime.numbers:
        if (b < r):
            pb.append(b)
            pb.append(-b)

    pb.sort()

    max_cp = 30
    ab = []

    for a in range(-r, r):
        for b in pb:
            cp = cprime(a,b, prime)
            if (cp > max_cp):
                max_cp = cp
                ab = [a,b]

    logging.info(ab)
    logging.info(ab[0]*ab[1])
Ejemplo n.º 3
0
def main(args):
    prime = PrimeNumberPool()
    for i in range(10000):
        prime.NewPrime()

    prime_num4 = []
    for p in prime.numbers:
        if (p > 1000 and p < 10000):
            prime_num4.append(p)

    pn4_perm = {}
    pn4_ps = set()
    for i in range(len(prime_num4) - 1):
        p = prime_num4[i]
        if (p in pn4_ps):
            continue
        for j in range(i + 1, len(prime_num4)):
            q = prime_num4[j]
            if (q in pn4_ps):
                continue
            if (IsPermute(p, q)):
                pn4_ps.add(p)
                pn4_ps.add(q)
                if (p in pn4_perm):
                    pn4_perm[p].append(q)
                else:
                    pn4_perm[p] = [p, q]

    for p in list(pn4_perm.keys()):
        ps = pn4_perm[p]
        if (len(ps) < 3):
            continue
        if (IsArithSeq3(ps)):
            logging.info(ps)
            logging.info(IsArithSeq3(ps))
Ejemplo n.º 4
0
def main(args):
    prime = PrimeNumberPool()
    for i in range(80000):
        prime.NewPrime()

    all_prime = set(prime.numbers)

    truncatable_prime = []

    for p in all_prime:
        if (p < 11):
            continue
        if (is_tr_prime(p, all_prime)):
            truncatable_prime.append(p)

    logging.debug(truncatable_prime)
    logging.info(sum(truncatable_prime))
Ejemplo n.º 5
0
def main(args):
    prime = PrimeNumberPool()

    cprime = set()

    ts1 = time.time()
    m = 2000
    for i in range(m):
        prime.NewPrime()

    pm = prime.numbers[:m]
    ts2 = time.time()
    logging.debug("time for build primes {}".format(ts2 - ts1))

    for i in range(m):
        p1 = pm[i]
        for j in range(i, m):
            p2 = pm[j]
            if (not prime.IsPrime(CatNum(p1, p2))):
                continue
            if (not prime.IsPrime(CatNum(p2, p1))):
                continue
            cprime.add((p1, p2))

    logging.debug(len(cprime))
    ts3 = time.time()
    logging.debug("time for build prime pairs {}".format(ts3 - ts2))

    for (p1, p2) in cprime:
        for p3 in pm:
            if (p3 <= p2): continue
            if (not Check(p3, [p1, p2], cprime)): continue
            for p4 in pm:
                if (p4 <= p3): continue
                if (not Check(p4, [p1, p2, p3], cprime)): continue
                for p5 in pm:
                    if (p5 <= p4): continue
                    if (not Check(p5, [p1, p2, p3, p4], cprime)): continue
                    logging.info((p1, p2, p3, p4, p5))
                    logging.info("result: {}".format(sum([p1, p2, p3, p4,
                                                          p5])))
                    return 0
Ejemplo n.º 6
0
def main(args):
    description = '''
    10001st prime
    Problem 7 
    By listing the first six prime numbers: 2, 3, 5, 7, 11, and 13, we can see that the 6th prime is 13.

    What is the 10 001st prime number?
    '''

    primes = PrimeNumberPool()

    if args.test:
        logging.info('Running test...')
        idx = 6 - 1
    else:
        idx = 10001 - 1

    num_primes = primes.NumberOfPrimes()
    for i in range(idx + 1 - num_primes):
        primes.NewPrime()

    result = primes.numbers[idx]
    solution = 'result:  {}'.format(result)
    logging.info(solution)