Exemple #1
0
Fichier : p88.py Projet : fazz/soft
from math import sqrt
import tools
primes = []
primelimit = 12000
tools.loadprimes(primes, primelimit)

limit = 12000

solutions = {}

minnumbers = {}
def prod(a):
	r = 1
	for n in a:
		r *= n
	return r

def combine(n, min_factor, factors):
	for f in xrange(min_factor, int((n**0.5)+1)):
		if n % f != 0:
			continue
		
		combine(n / f, f, factors + [f])

	if n == 1:
		orig_n = prod(factors)
		x = orig_n - sum(factors)
		if x >= 0:
			k = len(factors) + x
			if (not minnumbers.has_key(k)) and k <= limit:
Exemple #2
0
Fichier : p70.py Projet : fazz/soft
	return t

def ispermutation(x, y):
	xs = sorted(str(x))
	ys = sorted(str(y))
	if len(xs) != len(ys):
		return False
	p = len(xs)-1
	while p >= 0:
		if xs[p] == ys[p]:
			p -= 1
		else:
			break
	return (p == -1)

tools.loadprimes(primes, 10000000)

p2 = list(primes)
p2.reverse()

sr = int(math.sqrt(10000000))

minrel = 100
minn = 0
minprimes = ()

for p in primes:
	n = p*p

	if n >= 10000000:
		break
Exemple #3
0
Fichier : p87.py Projet : fazz/soft
from math import sqrt
import tools
primes = []
tools.loadprimes(primes, 7072)

limit = 50000000

squares = []
cubes = []
fourths = []

for p in primes:
	squares.append(p**2)
	cubes.append(p**3)
	fourths.append(p**4)

result = set()

for s in squares:
	for c in cubes:
		if s+c >= limit:
			break
		for f in fourths:
			summa = s+c+f
			if summa < limit:
				result.add(summa)
			else:
				break

print len(result)
Exemple #4
0
import tools

primes = []

tools.loadprimes(primes, 32000)

limit = 1000000000

def genadmissible(number, pos, result):
	while True:
		number = number*primes[pos]
		if number >= limit:
			return
		result.append(number)
		print tools.primefactorization(primes, number, 32000)
		genadmissible(number, pos+1, result)

admissible = []

genadmissible(1, 0, admissible)

print admissible, len(admissible)

result = set()
for n in admissible:
	i = 3
	while True:
		if tools.isprime(n+i):
			result.add(i)
			break
Exemple #5
0

import tools
import math

limit = 999966663333
#limit = 1000

sd = []

reallimit = int(math.sqrt(limit))

primes = []
tools.loadprimes(primes, reallimit)

for pi in range(len(primes)-1):
	lp = primes[pi]
	up = primes[pi+1]

	j = lp*(lp+1)
	sq = up*up
	while j < sq and j <= limit:
		if j%up:
			sd.append(j)
		j += lp
			
	j = up*(up-1)
	sq = lp*lp
	while j > sq:
		if j <= limit and j%lp:
			sd.append(j)
Exemple #6
0
Fichier : p60.py Projet : fazz/soft
import tools, math

primes = []

tools.loadprimes(primes, 9000)

primes.remove(2)

def crosssum(x):
	s = 0
	while x:
		s += x%10
		x /= 10
	return s

def findnextindex(current, m):
	if m == 0:
		return current+1
	
	a = 1
	while current+a < len(primes) and primes[current+a]%3 != m:
		a += 1
	return current + a

def combines(a):
	ret = True
	for i in a:
		for j in a:
			if i == j:
				continue