Пример #1
0
Файл: p204.py Проект: hhjeong/ps
import PrimeNumber, collections

primes = PrimeNumber.get_primes( 100 )

queues = {}
for p in primes:
	queues[p] = collections.deque()
	queues[p].append( p )

howmany = 1
while True:
	howmany += 1
	mini = 0
	for p in primes:
		if len( queues[p] ) == 0: continue
		if mini == 0 or queues[p][0] < queues[mini][0]:
			mini = p
	top = queues[mini][0]

	if howmany % 100 == 0:
		print howmany, top
	queues[mini].popleft()
	if top >= 10 ** 9:
		break
	for p in primes:
		if mini <= p and top * p <= 10 ** 9:
			queues[p].append( top * p )

print howmany
	
	
Пример #2
0
Файл: p77.py Проект: hhjeong/ps
def get_numways( n ):
    primes = PrimeNumber.get_primes( n )[::-1]
    cache = {}
    ret = solve( 0, n, primes, cache )
    return ret
Пример #3
0
Файл: p50.py Проект: hhjeong/ps
import PrimeNumber

limit = 10**6

primes = PrimeNumber.get_primes( limit )
sieves = PrimeNumber.sieve( limit )


best_length = 0
best_prime = 0

for i in xrange( len(primes) ):
	cand = 0
	for j in xrange( i, len(primes) ):
		cand += primes[j]
		if cand >= limit:
			break
		if sieves[ cand ]:
			length = j - i + 1
			if best_prime == 0 or best_length < length:
				best_length = length
				best_prime = cand

print best_prime, 'length is', best_length
	
Пример #4
0
Файл: p87.py Проект: hhjeong/ps
import PrimeNumber, math

bound = 50 * 10 ** 6
print bound
primes = PrimeNumber.get_primes( int( math.sqrt(bound) ) )

s = set( [ p**2 + q**3 + r**4 for p in primes for q in primes if p**2+q**3 <= bound for r in primes if p**2+q**3+r**4 <= bound ] )

"""
for sq in [ p**2 for p in primes ]:
	for cb in [ q**3 for q in primes if sq + q**3 <= bound ]:
		for qd in [ r**4 for r in primes if sq + cb + r**4 <= bound ]:
			s.add( sq + cb + qd )
"""
print len( s )