Exemple #1
0
def eightDivisorCount(n):
    ps = Primes.MakePrimeList(int(n**0.5)+2)
    primePi = Primes.Prime_Pi()
    f = 0
    for p in ps:
        if p**7 > n:
            break
        #print p
        f += 1
    for p in ps:
        if 2*p**3 > n:
            break
        f += primePi(n//(p**3), ps)
        print p,f,len(primePi.restricted_memo)
        if (n//(p**3)) >= p:
            f -= 1
        #print p, primePi(n//(p**3), ps)
    for n1,p1 in enumerate(ps):
        if p1**3 >= n:
            break
        for p2 in ps[n1+1:]:
            if p1*p2*p2 >= n:
                break
            f += primePi(n//(p1*p2),ps) - primePi(p2,ps)
            #print p1,p2,primePi(n//(p1*p2),ps),primePi(p2,ps)
            if p2 < 10000:
                print p1,p2,f,len(primePi.restricted_memo)
        print p1,f,len(primePi.restricted_memo)

    return f
def new_432(m):
    #primes = Primes.MakePrimeList(int(1.2*m**(1./2))+100)
    primes = Primes.MakePrimeList(int(1.2 * m**(1. / 2)) + 120)
    prime_pi = Primes.Prime_Pi()
    ans = sum_range(1, 18) + func(m, 7, primes, prime_pi)
    ans *= 510510
    for ix in range(7):
        ans *= (primes[ix] - 1)
        ans /= primes[ix]
    return ans
Exemple #3
0
# Euler 484 - Arithmetic Derivative
# projecteuler.net/problem=484
# Kelvin Blaser     2014.11.23

import Primes
reload(Primes)
import scipy as sp
import time

prime_pi = Primes.Prime_Pi()
'''Q_mem = {}
def Q(n,primes):
    #print 'Calculating Q[%d]'%(n,)
    if n >= 10**7:
        PRINT = True
    else:
        PRINT = False
    try:
        return Q_mem[n]
    except KeyError:
        pass
    ans = n
    r = 1
    while r <= len(primes) and sp.prod(primes[:r]) <= n:
        sign = (-1)**r
        count = 0
        for c in Primes.combProdLessThan(primes, r, n):
            ans += sign * (n//int(sp.prod(c)))
            count += 1
        if PRINT:
            print '%d from list of len %d: %d times; \t%d : %d'%(r,len(primes),