Пример #1
0
def perms (l) :
	if len(l) is 7 :
		if isPrime(digitsToNum(l)) :
			print "\t", l
			sys.exit(0)
		else :
			print l
	for i in range(7,0,-1) :
		if i in l :
			continue
		perms(l+[i])
Пример #2
0
def number(theDigs) :
	#global depth
	if len(theDigs) == 0 :
		#print depth
		return 1
	s = 0
	for digs2 in powerset(theDigs) :
		if digs2:
			count = 0
			for digs in allArrangements(digs2) :
				num = digitsToNum(digs)
				if isPrime(num) :
					count += 1
			if count > 0 :
				#for f in range(depth) :
				#	print " ",
				#print digs, num
				#depth.append(num)
				next = [x for x in theDigs if x not in digs]
				#print num, next
				s += count * number(next)
				#depth = depth[:-1]
	return s
Пример #3
0
# Find the first iteration where the ratio of primes along th diagonals
# of a spiral is below 10%. The spiral is formed as follows:
#	21	22	23	24	25	...
#	20	7	8	9	10
#	19	6	1	2	11
#	18	5	4	3	12
#	17	16	15	14	13

from useful import PrimeDict, isPrime

total = 0
primes = 0
it = 0
side = 1

while it == 0 or primes*10.0 / total >= 1 :
	#print it, primes, total
	it += 1
	side += 2
	
	if isPrime(side**2 - side + 1):
		primes += 1
	if isPrime((2*it)**2 + 1):
		primes += 1
	if isPrime((2*it)**2 - 2*it + 1):
		primes += 1
	total += 4

print side - 2
Пример #4
0
totalSum = 0

for repeatedDigit in range(10) :
	primes = set([])
	for numRepeats in range(numlength-1,0,-1) :
		numUniques = numlength - numRepeats
		print repeatedDigit, numRepeats
		primeCount = 0
		primeSum = 0
		for i in range(10**numUniques) :
			uniqueDigs = digits(i,numUniques)
			for combo in genAllLists(numUniques,0,9) :
				digs = [repeatedDigit]*numRepeats
				for place in reversed(range(len(combo))) :
					digs[combo[place]:combo[place]] = [uniqueDigs[place]]
				if digs[0] == 0 :
					continue
				num = digitsToNum(digs)
				if num not in primes and isPrime(num) :
					#print num
					primes.add(num)
					primeCount += 1
					primeSum += num
		if primeCount > 0 :
			print "S(", numlength, ", ", repeatedDigit, ") =", primeSum
			totalSum += primeSum
			break

print totalSum
Пример #5
0
def makesPrimes(a,b) :
	if isPrime(a * 10**(int(log10(b))+1) + b) and isPrime(b * 10**(int(log10(a))+1) + a) :
		return True
	return False