Пример #1
0
def alexandrian(n):
    R = [r**2 + 1 for r in range(n + 1)]
    P = eulertools.primesieve(n)
    R = [[] for r in range(n + 1)]
    for p in P:
        soln = eulertools.modsqrt_prime(-1, p)
        for s in soln:
            for k in xrange(s, n + 1, p):
                r2 = k**2 + 1
                R[k].append(p)

    F = []
    for r, V in enumerate(R):
        r2 = r**2 + 1
        F.append(factors(r2, V))

    output = set()
    for r, X in enumerate(F):
        if r == 0:
            continue
        r2 = r**2 + 1
        for x in X:
            p = x + r
            q = (r2 / x) + r
            A = abs(r * p * q)
            if p * q - p * r - q * r != 1:
                raise
            output.add(A)

    return sorted(list(output))
Пример #2
0
def test():
    P = eulertools.primesieve(10000)
    sol = 0
    for x in range(2, 10001):
        if d(P, d(P, x)) == x and x != d(P, x):
            sol += x

    return sol
Пример #3
0
def test():
	P = eulertools.primesieve(10000)
	sol = 0
	for x in range(2,10001):
		if d(P,d(P,x))==x and x!= d(P,x):
			sol +=x


	return sol
Пример #4
0
def test():
    P = set(eulertools.primesieve(10000))
    max_counter = 0
    for a in range(-100, 1000):
        for b in range(-100, 1000):
            x = 0
            while True:
                f = x**2 + a * x + b
                if f not in P:
                    break
                x += 1
            if x > max_counter:
                max_counter = x
                #print x,a,b,a*b
                sol = a * b
    return sol
Пример #5
0
from eulertools import primesieve


N = 10**9
Q = 100
P = primesieve(Q)

prev = set([1])
solution = [prev]
for i in range(1,100):

	new = set([a*p for p in P for a in prev if a*p <= N])
	print i,len(new)
	if len(new)==0:
		break
	solution.append(new)
	prev = new


solution = set.union(*solution)
print len(solution)
Пример #6
0
    for i in range(n):
        if i == 0:
            Q = (1, 2, 3, 4, 5, 6, 7, 8, 9)
        else:
            Q = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)

        for q in Q:
            sy = list(sx)
            sy[i] = str(q)
            y = int(''.join(sy))
            if eulertools.is_prime(y):
                return False
    return True


P = eulertools.primesieve(10**6)

output = []
qMax = 10**12
for p1 in P:
    for p2 in P:
        if p1 != p2:
            q = (p1**2) * (p2**3)
            if q > qMax:
                break

            output.append((q, p1, p2))

output.sort()

print len(output)
Пример #7
0
from eulertools import primesieve
from math import factorial

def nCr(n,r):
	return factorial(n)/(factorial(r)*factorial(n-r))

def containsFactor(x,F):
	for f in F:
		if x % f ==0:
			return True
	return False

N = 51

P = primesieve(N)
F = [p**2 for p in P]
output = set([nCr(n,r)  for n in range(0,N) for r in range(0,n+1)])

output = [a for a in output if not containsFactor(a,F)]
print output
print len(output)
print sum(output)
Пример #8
0
import eulertools
N = 10**8

P = eulertools.primesieve(N)
counter = 0
print 'Go'
for p1 in P:
	for p2 in P:
		if p2 > p1:
			break
		q = p1*p2
		if q > N:
			break

		counter +=1

print counter
Пример #9
0
import eulertools
import numpy

nmax = 50 * 10**6

A = [0 for i in xrange(nmax + 1)]

P = set(eulertools.primesieve(int(2**0.5 * nmax) + 1))
print len(P)
print 'Done'
for p in sorted(list(P)):
    if p > 2:
        roots = eulertools.modsqrt_prime((p + 1) / 2, p)
        if len(roots) > 0:
            for r in roots:
                if 2 * r * r - 1 in P:
                    a = r + p
                else:
                    a = r
                for s in xrange(a, nmax + 1, p):
                    A[s] = 1
print nmax - sum(A) - 1
Пример #10
0
def test():
    x = 600851475143
    rootx = int(x**0.5) + 1
    P = eulertools.primesieve(rootx)
    factors = [p for p in P if x % p == 0]
    return max(factors)
Пример #11
0
def test():
	P = eulertools.primesieve(100)
	solution = shortest_length(P,47547)
	return solution
Пример #12
0
def test():
	return sum(eulertools.primesieve(2000000))
Пример #13
0
from eulertools import primesieve

N = 10**9
Q = 100
P = primesieve(Q)

prev = set([1])
solution = [prev]
for i in range(1, 100):

    new = set([a * p for p in P for a in prev if a * p <= N])
    print i, len(new)
    if len(new) == 0:
        break
    solution.append(new)
    prev = new

solution = set.union(*solution)
print len(solution)
Пример #14
0
def test():
    n = 10001
    max_size = int(n * math.log(n * math.log(n)))
    A = eulertools.primesieve(max_size)
    return A[n - 1]
Пример #15
0
from itertools import combinations
from eulertools import gcd, factorise, primesieve, product
r = 12017639147
#r = 1000001

h = (r + 3) / 2
P = primesieve(int(h**0.5) + 1)
F = set(factorise(P, h))
N = len(F)
total = int(h / 3)
print h, N, F
for k in range(1, N + 1):
    for X in combinations(F, k):
        prod = product(X)
        term = int(2 * h / (3 * prod)) - int(h / (3 * prod))
        sign = (-1)**k
        print X, k, sign, prod
        total += sign * term

print total
#print 80840
Пример #16
0
def test():
    x = 600851475143
    rootx = int(x**0.5)+1
    P = eulertools.primesieve(rootx)
    factors = [p for p in P if x% p ==0]
    return max(factors)
Пример #17
0
import eulertools

N = 10**8

P = eulertools.primesieve(N)
counter = 0
print 'Go'
for p1 in P:
    for p2 in P:
        if p2 > p1:
            break
        q = p1 * p2
        if q > N:
            break

        counter += 1

print counter
Пример #18
0
import eulertools
import numpy

nmax = 50*10**6

A = [0 for i in xrange(nmax+1)]

P = set(eulertools.primesieve(int(2**0.5*nmax)+1))
print len(P)
print 'Done'
for p in sorted(list(P)):
	if p>2:
		roots = eulertools.modsqrt_prime((p+1)/2,p)
		if len(roots)>0:
			for r in roots:
				if 2*r*r-1 in P:
					a = r+p
				else:
					a = r
				for s in xrange(a,nmax+1,p):
					A[s]=1
print nmax-sum(A)-1